unit ssl_x509;

interface
uses ssl_types;

var
  X509_new : function: PX509 cdecl = nil;
  X509_free : procedure(x: PX509) cdecl = nil;
  X509_NAME_new : function :PX509_NAME cdecl = nil;
  X509_NAME_free : procedure(x:PX509_NAME) cdecl = nil;
  X509_REQ_new : function :PX509_REQ cdecl = nil;
  X509_REQ_free : procedure(x:PX509_REQ) cdecl = nil;
  X509_to_X509_REQ : function(x: PX509; pkey: PEVP_PKEY; const md: PEVP_MD): PX509_REQ cdecl = nil;
  X509_NAME_add_entry_by_txt : function(name: PX509_NAME; const field: PAnsiChar; _type: TC_Int;
    const bytes: PAnsiChar; len: TC_INT; loc: TC_INT; _set: TC_Int): TC_Int cdecl = nil;
  X509_INFO_free : procedure (a : PX509_INFO) cdecl = nil;
  X509_set_version : function(x: PX509; version: TC_LONG): TC_Int cdecl = nil;
  X509_get_serialNumber : function(x: PX509): PASN1_INTEGER cdecl = nil;
  X509_gmtime_adj : function(s: PASN1_TIME; adj: TC_LONG): PASN1_TIME cdecl = nil;
  X509_set_notBefore : function(x: PX509; tm: PASN1_TIME): TC_Int cdecl = nil;
  X509_set_notAfter : function(x: PX509; tm: PASN1_TIME): TC_Int cdecl = nil;
  X509_set_pubkey : function(x: PX509; pkey: PEVP_PKEY): TC_Int cdecl = nil;
  X509_REQ_set_pubkey : function(x: PX509_REQ; pkey: PEVP_PKEY): TC_Int cdecl = nil;
  X509_sign : function(x: PX509; pkey: PEVP_PKEY; const md: PEVP_MD): TC_Int cdecl = nil;
  X509_REQ_sign : function(x: PX509_REQ; pkey: PEVP_PKEY; const md: PEVP_MD): TC_Int cdecl = nil;
  X509_REQ_add_extensions : function(req: PX509_REQ; exts: PSTACK_OF_X509_EXTENSION): TC_Int cdecl = nil;
  X509_EXTENSION_create_by_NID : function(ex: PPX509_EXTENSION; nid: TC_Int;
    crit: TC_Int; data: PASN1_OCTET_STRING): PX509_EXTENSION cdecl = nil;
  X509V3_set_ctx : procedure(var ctx: X509V3_CTX; issuer: PX509; subject: PX509; req: PX509_REQ; crl: PX509_CRL; flags: TC_Int) cdecl = nil;
  X509_EXTENSION_free : procedure(ex: Pointer) cdecl = nil;
  X509_add_ext : function(cert: PX509; ext: PX509_EXTENSION; loc: TC_Int): TC_Int cdecl = nil;
  X509_print : function(bp : PBIO; x : PX509) : TC_Int cdecl = nil;
  X509_STORE_add_lookup : function (v : PX509_STORE; m : PX509_LOOKUP_METHOD) : PX509_LOOKUP cdecl = nil;
  X509_STORE_load_locations : function ( ctx : PX509_STORE; const _file; path : PAnsiChar) : TC_Int cdecl = nil;

  i2d_PUBKEY_bio: function(bp: PBIO; pkey: PEVP_PKEY): TC_INT; cdecl = nil;
  d2i_PUBKEY_bio: function(bp: PBIO; a: PPEVP_PKEY): PEVP_PKEY; cdecl = nil;
  i2d_PrivateKey_bio: function(bp: PBIO; pkey: PEVP_PKEY): TC_INT; cdecl = nil;
  d2i_PrivateKey_bio: function(bp: PBIO; a: PPEVP_PKEY): PEVP_PKEY; cdecl = nil;


(*
X509_CRL_METHOD *X509_CRL_METHOD_new: function(
    int (*crl_init)(X509_CRL *crl);
    int (*crl_free)(X509_CRL *crl);
    int (*crl_lookup)(X509_CRL *crl; X509_REVOKED **ret;
                ASN1_INTEGER *ser; X509_NAME *issuer);
    int (*crl_verify)(X509_CRL *crl; EVP_PKEY *pk));

int (*X509_TRUST_set_default(int (*trust)(int ; X509 *; int)))(int; X509 *; int);

int X509_TRUST_add(int id; int flags; int (*ck)(X509_TRUST *; X509 *; int);
                    char *name; int arg1; void *arg2);

*)

  X509_CRL_set_default_method: procedure(meth: PX509_CRL_METHOD); cdecl = nil;

  X509_CRL_METHOD_free: procedure(m: PX509_CRL_METHOD); cdecl = nil;

  X509_CRL_set_meth_data: procedure(crl: PX509_CRL; dat: Pointer); cdecl = nil;
  X509_CRL_get_meth_data: function(crl: PX509_CRL): Pointer; cdecl = nil;
  X509_verify_cert_error_string: function(n: TC_LONG): PAnsiChar; cdecl = nil;


  X509_verify: function(a: PX509; r: PEVP_PKEY): TC_INT; cdecl = nil;

  X509_REQ_verify: function(a: PX509_REQ; r: PEVP_PKEY): TC_INT; cdecl = nil;
  X509_CRL_verify: function(a: PX509_CRL; r: PEVP_PKEY): TC_INT; cdecl = nil;
  NETSCAPE_SPKI_verify: function(a: PNETSCAPE_SPKI; r: PEVP_PKEY): TC_INT; cdecl = nil;

  NETSCAPE_SPKI_b64_decode: function(str: PAnsiChar; len: TC_INT): PNETSCAPE_SPKI; cdecl = nil;
  NETSCAPE_SPKI_b64_encode: function(x: PNETSCAPE_SPKI): PAnsiChar; cdecl = nil;
  NETSCAPE_SPKI_get_pubkey: function(x: PNETSCAPE_SPKI): PEVP_PKEY; cdecl = nil;
  NETSCAPE_SPKI_set_pubkey: function(x: PNETSCAPE_SPKI; pkey: PEVP_PKEY): TC_INT; cdecl = nil;

  NETSCAPE_SPKI_print: function(_out: PBIO; spki: PNETSCAPE_SPKI): TC_INT; cdecl = nil;

  X509_signature_dump: function(bp: PBIO;const sig: PASN1_STRING; indent: TC_INT): TC_INT; cdecl = nil;
  X509_signature_print: function(bp: PBIO;alg: PX509_ALGOR; sig: PASN1_STRING): TC_INT; cdecl = nil;

  X509_sign_ctx: function(x: PX509; ctx: PEVP_MD_CTX): TC_INT; cdecl = nil;
  X509_REQ_sign_ctx: function(x: PX509_REQ; ctx: PEVP_MD_CTX): TC_INT; cdecl = nil;
  X509_CRL_sign: function(x: PX509_CRL; pkey: PEVP_PKEY; const md: PEVP_MD): TC_INT; cdecl = nil;
  X509_CRL_sign_ctx: function(x: PX509_CRL; ctx: PEVP_MD_CTX): TC_INT; cdecl = nil;
  NETSCAPE_SPKI_sign: function(x: PNETSCAPE_SPKI; pkey: PEVP_PKEY; const md: PEVP_MD): TC_INT; cdecl = nil;

  X509_pubkey_digest: function(const data: PX509;const _type: PEVP_MD; md: PAnsiChar; var len: TC_UINT): TC_INT; cdecl = nil;
  X509_digest: function(const data: PX509;const _type: PEVP_MD; md: PAnsiChar; var len: TC_UINT): TC_INT; cdecl = nil;
  X509_CRL_digest: function(const data: PX509_CRL;const _type: PEVP_MD; md: PAnsiChar; var len: TC_UINT): TC_INT; cdecl = nil;
  X509_REQ_digest: function(const data: PX509_REQ;const _type: PEVP_MD; md: PAnsiChar; var len: TC_UINT): TC_INT; cdecl = nil;
  X509_NAME_digest: function(const data: PX509_NAME; const _type: PEVP_MD; md: PAnsiChar; var len: TC_UINT): TC_INT; cdecl = nil;

  d2i_X509_bio: function(bp: PBIO; _x509: PPX509): PX509; cdecl = nil;
  i2d_X509_bio: function(bp: PBIO; _x509: PX509): TC_INT; cdecl = nil;
  d2i_X509_CRL_bio: function(bp: PBIO; crl: PPX509_CRL): PX509_CRL; cdecl = nil;
  i2d_X509_CRL_bio: function(bp: PBIO; crl :PX509_CRL): TC_INT; cdecl = nil;
  d2i_X509_REQ_bio: function(bp: PBIO; req: PPX509_REQ): PX509_REQ; cdecl = nil;
  i2d_X509_REQ_bio: function(bp: PBIO; req: PX509_REQ): TC_INT; cdecl = nil;

  d2i_RSAPrivateKey_bio: function(bp: PBIO; _rsa: PPRSA): PRSA; cdecl = nil;
  i2d_RSAPrivateKey_bio: function(bp: PBIO;_rsa: PRSA): TC_INT; cdecl = nil;
  d2i_RSAPublicKey_bio: function(bp: PBIO; _rsa: PPRSA): PRSA; cdecl = nil;
  i2d_RSAPublicKey_bio: function(bp: PBIO;_rsa: PRSA): TC_INT; cdecl = nil;
  d2i_RSA_PUBKEY_bio: function(bp: PBIO; _rsa: PPRSA): PRSA; cdecl = nil;
  i2d_RSA_PUBKEY_bio: function(bp: PBIO;_rsa: PRSA): TC_INT; cdecl = nil;

  d2i_DSA_PUBKEY_bio: function(bp: PBIO; _dsa: PDSA): PDSA; cdecl = nil;
  i2d_DSA_PUBKEY_bio: function(bp: PBIO; _dsa: DSA): TC_INT; cdecl = nil;
  d2i_DSAPrivateKey_bio: function(bp: PBIO; _dsa: PDSA): PDSA; cdecl = nil;
  i2d_DSAPrivateKey_bio: function(bp: PBIO; _dsa: DSA): TC_INT; cdecl = nil;

  d2i_EC_PUBKEY_bio: function(bp: PBIO; _eckey: PPEC_KEY): PEC_KEY; cdecl = nil;
  i2d_EC_PUBKEY_bio: function(bp: PBIO; _eckey: PEC_KEY): TC_INT; cdecl = nil;
  d2i_ECPrivateKey_bio: function(bp: PBIO; _eckey: PPEC_KEY):PEC_KEY; cdecl = nil;
  i2d_ECPrivateKey_bio: function(bp: PBIO; _eckey: PEC_KEY): TC_INT; cdecl = nil;

  d2i_PKCS8_bio: function(bp: PBIO; p8: PPX509_SIG): PX509_SIG;
  i2d_PKCS8_bio: function(bp: PBIO; p8: PX509_SIG): TC_INT; cdecl = nil;
  d2i_PKCS8_PRIV_KEY_INFO_bio: function(bp: PBIO; p8inf: PPPKCS8_PRIV_KEY_INFO): PPKCS8_PRIV_KEY_INFO; cdecl = nil;
  i2d_PKCS8_PRIV_KEY_INFO_bio: function(bp: PBIO; p8inf: PPKCS8_PRIV_KEY_INFO): TC_INT; cdecl = nil;
  i2d_PKCS8PrivateKeyInfo_bio: function(bp: PBIO; key: PEVP_PKEY): TC_INT; cdecl = nil;

  X509_dup: function(_x509: PX509): PX509; cdecl = nil;
  X509_ATTRIBUTE_dup: function(xa: PX509_ATTRIBUTE): PX509_ATTRIBUTE; cdecl = nil;
  X509_EXTENSION_dup: function(ex: PX509_EXTENSION): PX509_EXTENSION; cdecl = nil;
  X509_CRL_dup: function(crl: PX509_CRL): PX509_CRL; cdecl = nil;
  X509_REQ_dup: function(req: PX509_REQ): PX509_REQ; cdecl = nil;

  X509_ALGOR_new: function: PX509_ALGOR; cdecl = nil;
  X509_ALGOR_free: procedure(a: PX509_ALGOR); cdecl = nil;
  X509_ALGOR_it: function: PASN1_ITEM; cdecl = nil;
  X509_ALGOR_dup: function(xn: PX509_ALGOR): PX509_ALGOR; cdecl = nil;
  X509_ALGOR_set0: function(alg: PX509_ALGOR; aobj: PASN1_OBJECT; ptype: TC_INT; pval: Pointer): TC_INT; cdecl = nil;
  X509_ALGOR_get0: procedure(paobj: PPASN1_OBJECT; var pptype: TC_INT; var ppval: Pointer; algor: PX509_ALGOR); cdecl = nil;
  X509_ALGOR_set_md: procedure(alg: PX509_ALGOR; const md: PEVP_MD); cdecl = nil;
  d2i_X509_ALGOR: function(a: PPX509_ALGOR; _in: PPAnsiChar; len: TC_LONG): PX509_ALGOR; cdecl = nil;
  i2d_X509_ALGOR: function(a: PX509_ALGOR; _out: PPAnsiChar): TC_INT; cdecl = nil;

  X509_EXTENSION_new: function: PX509_EXTENSION; cdecl = nil;
  d2i_X509_EXTENSION: function(a: PPX509_EXTENSION; _in: PPAnsiChar; len: TC_LONG): PX509_EXTENSION; cdecl = nil;
  i2d_X509_EXTENSION: function(a: PX509_EXTENSION; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_EXTENSION_it: function: PASN1_ITEM; cdecl = nil;
  X509_ATTRIBUTE_new: function: PX509_ATTRIBUTE; cdecl = nil;
  X509_ATTRIBUTE_free: procedure(a: PX509_ATTRIBUTE); cdecl = nil;
  d2i_X509_ATTRIBUTE: function(a: PPX509_ATTRIBUTE; _in: PPAnsiChar; len: TC_LONG): PX509_ATTRIBUTE; cdecl = nil;
  i2d_X509_ATTRIBUTE: function(a: PX509_ATTRIBUTE; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_ATTRIBUTE_it: function: PASN1_ITEM; cdecl = nil;
  d2i_X509_REQ: function(a: PPX509_REQ; _in: PPAnsiChar; len: TC_LONG): PX509_REQ; cdecl = nil;
  i2d_X509_REQ: function(a: PX509_REQ; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_REQ_it: function: PASN1_ITEM; cdecl = nil;
  X509_REQ_INFO_new: function: PX509_REQ_INFO; cdecl = nil;
  X509_REQ_INFO_free: procedure(a: PX509_REQ_INFO); cdecl = nil;
  d2i_X509_REQ_INFO: function(a: PPX509_REQ_INFO; _in: PPAnsiChar; len: TC_LONG): PX509_REQ_INFO; cdecl = nil;
  i2d_X509_REQ_INFO: function(a: PX509_REQ_INFO; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_REQ_INFO_it: function: PASN1_ITEM; cdecl = nil;
  X509_SIG_new: function: PX509_SIG; cdecl = nil;
  X509_SIG_free: procedure(a: PX509_SIG); cdecl = nil;
  d2i_X509_SIG: function(a: PPX509_SIG; _in: PPAnsiChar; len: TC_LONG): PX509_SIG; cdecl = nil;
  i2d_X509_SIG: function(a: PX509_SIG; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_SIG_it: function: PASN1_ITEM; cdecl = nil;
  X509_PUBKEY_new: function: PX509_PUBKEY; cdecl = nil;
  X509_PUBKEY_free: procedure(a: PX509_PUBKEY); cdecl = nil;
  d2i_X509_PUBKEY: function(a: PPX509_PUBKEY; _in: PPAnsiChar; len: TC_LONG): PX509_PUBKEY; cdecl = nil;
  i2d_X509_PUBKEY: function(a: PX509_PUBKEY; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_PUBKEY_it: function: PASN1_ITEM; cdecl = nil;
  X509_VAL_new: function: PX509_VAL; cdecl = nil;
  X509_VAL_free: procedure(a: PX509_VAL); cdecl = nil;
  d2i_X509_VAL: function(a: PPX509_VAL; _in: PPAnsiChar; len: TC_LONG): PX509_VAL; cdecl = nil;
  i2d_X509_VAL: function(a: PX509_VAL; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_VAL_it: function: PASN1_ITEM; cdecl = nil;
  X509_NAME_ENTRY_new: function: PX509_NAME_ENTRY; cdecl = nil;
  X509_NAME_ENTRY_free: procedure(a: PX509_NAME_ENTRY); cdecl = nil;
  d2i_X509_NAME_ENTRY: function(a: PPX509_NAME_ENTRY; _in: PPAnsiChar; len: TC_LONG): PX509_NAME_ENTRY; cdecl = nil;
  i2d_X509_NAME_ENTRY: function(a: PX509_NAME_ENTRY; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_NAME_ENTRY_it: function: PASN1_ITEM; cdecl = nil;
  d2i_X509_NAME: function(a: PPX509_NAME; _in: PPAnsiChar; len: TC_LONG): PX509_NAME; cdecl = nil;
  i2d_X509_NAME: function(a: PX509_NAME; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_NAME_it: function: PASN1_ITEM; cdecl = nil;
  X509_CINF_new: function: PX509_CINF; cdecl = nil;
  X509_CINF_free: procedure(a: PX509_CINF); cdecl = nil;
  d2i_X509_CINF: function(a: PPX509_CINF; _in: PPAnsiChar; len: TC_LONG): PX509_CINF; cdecl = nil;
  i2d_X509_CINF: function(a: PX509_CINF; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_CINF_it: function: PASN1_ITEM; cdecl = nil;
  d2i_X509: function(a: PPX509; _in: PPAnsiChar; len: TC_LONG): PX509; cdecl = nil;
  i2d_X509: function(a: PX509; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_it: function: PASN1_ITEM; cdecl = nil;
  X509_CERT_AUX_new: function: PX509_CERT_AUX; cdecl = nil;
  X509_CERT_AUX_free: procedure(a: PX509_CERT_AUX); cdecl = nil;
  d2i_X509_CERT_AUX: function(a: PPX509_CERT_AUX; _in: PPAnsiChar; len: TC_LONG): PX509_CERT_AUX; cdecl = nil;
  i2d_X509_CERT_AUX: function(a: PX509_CERT_AUX; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_CERT_AUX_it: function: PASN1_ITEM; cdecl = nil;
  X509_CERT_PAIR_new: function: PX509_CERT_PAIR; cdecl = nil;
  X509_CERT_PAIR_free: procedure(a: PX509_CERT_PAIR); cdecl = nil;
  d2i_X509_CERT_PAIR: function(a: PPX509_CERT_PAIR; _in: PPAnsiChar; len: TC_LONG): PX509_CERT_PAIR; cdecl = nil;
  i2d_X509_CERT_PAIR: function(a: PX509_CERT_PAIR; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_CERT_PAIR_it: function: PASN1_ITEM; cdecl = nil;
  X509_REVOKED_new: function: PX509_REVOKED; cdecl = nil;
  X509_REVOKED_free: procedure(a: PX509_REVOKED); cdecl = nil;
  d2i_X509_REVOKED: function(a: PPX509_REVOKED; _in: PPAnsiChar; len: TC_LONG): PX509_REVOKED; cdecl = nil;
  i2d_X509_REVOKED: function(a: PX509_REVOKED; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_REVOKED_it: function: PASN1_ITEM; cdecl = nil;
  X509_CRL_INFO_new: function: PX509_CRL_INFO; cdecl = nil;
  X509_CRL_INFO_free: procedure(a: PX509_CRL_INFO); cdecl = nil;
  d2i_X509_CRL_INFO: function(a: PPX509_CRL_INFO; _in: PPAnsiChar; len: TC_LONG): PX509_CRL_INFO; cdecl = nil;
  i2d_X509_CRL_INFO: function(a: PX509_CRL_INFO; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_CRL_INFO_it: function: PASN1_ITEM; cdecl = nil;
  X509_CRL_new: function: PX509_CRL; cdecl = nil;
  X509_CRL_free: procedure(a: PX509_CRL); cdecl = nil;
  d2i_X509_CRL: function(a: PPX509_CRL; _in: PPAnsiChar; len: TC_LONG): PX509_CRL; cdecl = nil;
  i2d_X509_CRL: function(a: PX509_CRL; _out: PPAnsiChar): TC_INT; cdecl = nil;
  X509_CRL_it: function: PASN1_ITEM; cdecl = nil;
  NETSCAPE_SPKI_new: function: PNETSCAPE_SPKI; cdecl = nil;
  NETSCAPE_SPKI_free: procedure(a: PNETSCAPE_SPKI); cdecl = nil;
  d2i_NETSCAPE_SPKI: function(a: PPNETSCAPE_SPKI; _in: PPAnsiChar; len: TC_LONG): PNETSCAPE_SPKI; cdecl = nil;
  i2d_NETSCAPE_SPKI: function(a: PNETSCAPE_SPKI; _out: PPAnsiChar): TC_INT; cdecl = nil;
  NETSCAPE_SPKI_it: function: PASN1_ITEM; cdecl = nil;
  NETSCAPE_SPKAC_new: function: PNETSCAPE_SPKAC; cdecl = nil;
  NETSCAPE_SPKAC_free: procedure(a: PNETSCAPE_SPKAC); cdecl = nil;
  d2i_NETSCAPE_SPKAC: function(a: PPNETSCAPE_SPKAC; _in: PPAnsiChar; len: TC_LONG): PNETSCAPE_SPKAC; cdecl = nil;
  i2d_NETSCAPE_SPKAC: function(a: PNETSCAPE_SPKAC; _out: PPAnsiChar): TC_INT; cdecl = nil;
  NETSCAPE_SPKAC_it: function: PASN1_ITEM; cdecl = nil;
  NETSCAPE_CERT_SEQUENCE_new: function: PNETSCAPE_CERT_SEQUENCE; cdecl = nil;
  NETSCAPE_CERT_SEQUENCE_free: procedure(a: PNETSCAPE_CERT_SEQUENCE); cdecl = nil;
  d2i_NETSCAPE_CERT_SEQUENCE: function(a: PPNETSCAPE_CERT_SEQUENCE; _in: PPAnsiChar; len: TC_LONG): PNETSCAPE_CERT_SEQUENCE; cdecl = nil;
  i2d_NETSCAPE_CERT_SEQUENCE: function(a: PNETSCAPE_CERT_SEQUENCE; _out: PPAnsiChar): TC_INT; cdecl = nil;
  NETSCAPE_CERT_SEQUENCE_it: function: PASN1_ITEM; cdecl = nil;

    X509_NAME_dup: function(xn: PX509_NAME): PX509_NAME; cdecl = nil;
    X509_NAME_ENTRY_dup: function(ne: PX509_NAME_ENTRY): PX509_NAME_ENTRY; cdecl = nil;
    X509_cmp_time:function(const s: PASN1_TIME; t: TC_TIME_T): TC_INT; cdecl = nil;
    X509_cmp_current_time: function(const s: PASN1_TIME): TC_INT; cdecl = nil;
    X509_time_adj: function(s: PASN1_TIME; adj: TC_LONG; var t: TC_TIME_T): PASN1_TIME; cdecl = nil;
    X509_time_adj_ex: function(s: PASN1_TIME; offset_day: TC_INT; offset_sec: TC_LONG; var t: TC_TIME_T): PASN1_TIME; cdecl = nil;
    X509_get_default_cert_area: function: PAnsiChar; cdecl = nil;
    X509_get_default_cert_dir: function: PAnsiChar; cdecl = nil;
    X509_get_default_cert_file: function: PAnsiChar; cdecl = nil;
    X509_get_default_cert_dir_env: function: PAnsiChar; cdecl = nil;
    X509_get_default_cert_file_env: function: PAnsiChar; cdecl = nil;
    X509_get_default_private_dir: function: PAnsiChar; cdecl = nil;
    X509_REQ_to_X509: function(r: PX509_REQ; days: TC_INT; pkey: PEVP_PKEY): PX509; cdecl = nil;
    X509_PUBKEY_set: function(x: PPX509_PUBKEY; pkey: PEVP_PKEY): TC_INT; cdecl = nil;
    X509_PUBKEY_get: function(key: PX509_PUBKEY): PEVP_PKEY; cdecl = nil;
    X509_get_pubkey_parameters: function(pkey: PEVP_PKEY; chain: PSTACK_OF_X509): TC_INT; cdecl = nil;
    i2d_PUBKEY: function(a: PEVP_PKEY; pp: PPAnsiChar): TC_INT; cdecl = nil;
    d2i_PUBKEY: function(a: PPEVP_PKEY; pp: PPAnsiChar; _length: TC_LONG): PEVP_PKEY; cdecl = nil;
    i2d_RSA_PUBKEY: function(a: PRSA; pp: PPAnsiChar): TC_INT; cdecl = nil;
    d2i_RSA_PUBKEY: function(a: PPRSA; pp: PPAnsiChar; _length: TC_LONG): PRSA; cdecl = nil;
    i2d_DSA_PUBKEY: function(a: PDSA; pp: PPAnsiChar): TC_INT; cdecl = nil;
    d2i_DSA_PUBKEY: function(a: PPDSA; pp: PPAnsiChar; _length: TC_LONG): PDSA; cdecl = nil;
    i2d_EC_PUBKEY: function(a: PEC_KEY; pp: PPAnsiChar): TC_INT; cdecl = nil;
    d2i_EC_PUBKEY: function(a: PPEC_KEY;  pp: PPAnsiChar; _length: TC_LONG): PEC_KEY; cdecl = nil;
    X509_NAME_set: function(x: PPX509_NAME; name: PX509_NAME): TC_INT; cdecl = nil;
    X509_get_ex_new_index: function(argl: TC_LONG; argp: Pointer; new_func: CRYPTO_EX_new; dup_func: CRYPTO_EX_dup; free_func: CRYPTO_EX_free): TC_INT; cdecl = nil;
    X509_set_ex_data: function(r: PX509; idx: TC_INT; arg: Pointer): TC_INT; cdecl = nil;
    X509_get_ex_data: function(r: PX509; idx: TC_INT): Pointer; cdecl = nil;
    i2d_X509_AUX: function(a: PX509; pp: PPAnsiChar): TC_INT; cdecl = nil;
    d2i_X509_AUX: function(a: PPX509; pp: PPAnsiChar; _length: TC_LONG): PX509; cdecl = nil;

    X509_alias_set1: function(x: PX509;  name: PAnsiChar; len: TC_INT): TC_INT; cdecl = nil;
    X509_keyid_set1: function(x: PX509;  id: PAnsiChar; len: TC_INT): TC_INT; cdecl = nil;
    X509_alias_get0: function(x: PX509;  var len: TC_INT): PAnsiChar; cdecl = nil;
    X509_keyid_get0: function(x: PX509;  var len: TC_INT): PAnsiChar; cdecl = nil;

    X509_TRUST_set: function(var T: TC_INT; trust: TC_INT): TC_INT; cdecl = nil;
    X509_add1_trust_object: function(x: PX509;  obj: PASN1_OBJECT): TC_INT; cdecl = nil;
    X509_add1_reject_object: function(x: PX509; obj: PASN1_OBJECT): TC_INT; cdecl = nil;
    X509_trust_clear: procedure(x: PX509); cdecl = nil;
    X509_reject_clear: procedure(x: PX509); cdecl = nil;
    X509_CRL_add0_revoked: function(crl: PX509_CRL; rev: PX509_REVOKED): TC_INT; cdecl = nil;
    X509_CRL_get0_by_serial: function(crl: PX509_CRL; r: PPX509_REVOKED; serial: PASN1_INTEGER): TC_INT; cdecl = nil;
    X509_CRL_get0_by_cert: function(crl: PX509_CRL; r: PPX509_REVOKED; x: PX509): TC_INT; cdecl = nil;

    X509_PKEY_new: function: PX509_PKEY; cdecl = nil;
    X509_PKEY_free: procedure(a: PX509_PKEY); cdecl = nil;
    i2d_X509_PKEY: function(a: PX509_PKEY; pp: PPAnsiChar): TC_INT; cdecl = nil;
    d2i_X509_PKEY: function(a: PPX509_PKEY; pp: PPAnsiChar; _length: TC_LONG): PX509_PKEY; cdecl = nil;

    X509_INFO_new: function: PX509_INFO; cdecl = nil;
    X509_NAME_oneline: function(a: PX509_NAME; buf: PAnsiChar; size: TC_INT): PAnsiChar; cdecl = nil;

    ASN1_verify: function(i2d: i2d_of_void; algor1: PX509_ALGOR; signature: PASN1_BIT_STRING; data: PAnsiChar; pkey: PEVP_PKEY): TC_INT; cdecl = nil;

    ASN1_digest: function(i2d: i2d_of_void; const _type: PEVP_MD; data: PAnsiChar; md: PAnsiChar; var len: TC_UINT): TC_INT; cdecl = nil;

    ASN1_sign: function(i2d: i2d_of_void;  algor1: PX509_ALGOR; algor2: PX509_ALGOR; signature: PASN1_BIT_STRING; data: PAnsiChar; pkey: PEVP_PKEY; const _type: PEVP_MD): TC_INT; cdecl = nil;

    ASN1_item_digest: function(const it: PASN1_ITEM; const _type: PEVP_MD; data: Pointer; md: PAnsiChar; var len: TC_UINT): TC_INT; cdecl = nil;

    ASN1_item_verify: function(const it: PASN1_ITEM; algor1: PX509_ALGOR; signature: PASN1_BIT_STRING; data: Pointer; pkey: PEVP_PKEY): TC_INT; cdecl = nil;

    ASN1_item_sign: function(const it: PASN1_ITEM; algor1: PX509_ALGOR; algor2: PX509_ALGOR; signature: PASN1_BIT_STRING; data: Pointer; pkey: PEVP_PKEY; const _type: PEVP_MD): TC_INT; cdecl = nil;
    ASN1_item_sign_ctx: function(const it: PASN1_ITEM; algor1: PX509_ALGOR; algor2: PX509_ALGOR; signature: PASN1_BIT_STRING; asn: Pointer; ctx: PEVP_MD_CTX): TC_INT; cdecl = nil;
    X509_set_serialNumber: function(x: PX509; serial: PASN1_INTEGER): TC_INT; cdecl = nil;
    X509_set_issuer_name: function(x: PX509; name: PX509_NAME): TC_INT; cdecl = nil;
    X509_get_issuer_name: function(a: PX509): PX509_NAME; cdecl = nil;
    X509_set_subject_name: function(x: PX509; name: PX509_NAME): TC_INT; cdecl = nil;
    X509_get_subject_name: function(a: PX509): PX509_NAME; cdecl = nil;
    X509_get_pubkey: function(x: PX509): PEVP_PKEY; cdecl = nil;
    X509_get0_pubkey_bitstr: function(const x: PX509): PASN1_BIT_STRING; cdecl = nil;
    X509_certificate_type: function(x: PX509; pubkey: PEVP_PKEY): TC_INT; cdecl = nil;

    X509_REQ_set_version: function(x: PX509_REQ; version: TC_LONG): TC_INT; cdecl = nil;
    X509_REQ_set_subject_name: function(req: PX509_REQ; name: PX509_NAME): TC_INT; cdecl = nil;
    X509_REQ_get_pubkey: function(req: PX509_REQ): PEVP_PKEY; cdecl = nil;
    X509_REQ_extension_nid: function(nid: TC_INT): TC_INT; cdecl = nil;
    X509_REQ_get_extension_nids: function: PC_INT; cdecl = nil;
    X509_REQ_set_extension_nids: procedure(nids: PC_INT); cdecl = nil;
    X509_REQ_get_extensions: function(req: PX509_REQ): PSTACK_OF_X509_EXTENSION;
    X509_REQ_add_extensions_nid: function(req: PX509_REQ; exts: PSTACK_OF_X509_EXTENSION; nid: TC_INT): TC_INT; cdecl = nil;
    X509_REQ_get_attr_count: function(const req: PX509_REQ): TC_INT; cdecl = nil;
    X509_REQ_get_attr_by_NID: function(const req: PX509_REQ; nid: TC_INT; lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_REQ_get_attr_by_OBJ: function(const req: PX509_REQ; obj: PASN1_OBJECT; lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_REQ_get_attr: function(const req: PX509_REQ; loc: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    X509_REQ_delete_attr: function(req: PX509_REQ; loc: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    X509_REQ_add1_attr: function(req: PX509_REQ; attr: PX509_ATTRIBUTE): TC_INT; cdecl = nil;
    X509_REQ_add1_attr_by_OBJ: function(req: PX509_REQ; const obj: PASN1_OBJECT; _type: TC_INT; const bytes: PAnsiChar; len: TC_INT): TC_INT; cdecl = nil;
    X509_REQ_add1_attr_by_NID: function(req: PX509_REQ; nid: TC_INT; _type: TC_INT; const bytes: PAnsiChar; len: TC_INT): TC_INT; cdecl = nil;
    X509_REQ_add1_attr_by_txt: function(req: PX509_REQ; attrname: PAnsiChar; _type: TC_INT; const bytes: PAnsiChar; len: TC_INT): TC_INT; cdecl = nil;

    X509_CRL_set_version: function(x: PX509_CRL; _version: TC_LONG): TC_INT; cdecl = nil;
    X509_CRL_set_issuer_name: function(x: PX509_CRL; name: PX509_NAME): TC_INT; cdecl = nil;
    X509_CRL_set_lastUpdate: function(x: PX509_CRL; const tm: PASN1_TIME): TC_INT; cdecl = nil;
    X509_CRL_set_nextUpdate: function(x: PX509_CRL; const tm: PASN1_TIME): TC_INT; cdecl = nil;
    X509_CRL_sort: function(crl: PX509_CRL): TC_INT; cdecl = nil;

    X509_REVOKED_set_serialNumber: function(x: PX509_REVOKED; serial: PASN1_INTEGER): TC_INT; cdecl = nil;
    X509_REVOKED_set_revocationDate: function(r: PX509_REVOKED; tm: PASN1_TIME): TC_INT; cdecl = nil;

    X509_REQ_check_private_key: function(_x509: PX509_REQ; pkey: PEVP_PKEY): TC_INT; cdecl = nil;

    X509_check_private_key: function(_x509: PX509; pkey: PEVP_PKEY): TC_INT; cdecl = nil;

    X509_issuer_and_serial_cmp: function(const a: PX509; const b: PX509) : TC_INT; cdecl = nil;
    X509_issuer_and_serial_hash: function(a: PX509): TC_ULONG; cdecl = nil;

    X509_issuer_name_cmp: function(const a: PX509; const b: PX509): TC_INT; cdecl = nil;
    X509_issuer_name_hash: function(a: PX509): TC_ULONG; cdecl = nil;
    X509_subject_name_cmp: function(const a: PX509; const b: PX509): TC_INT; cdecl = nil;
    X509_subject_name_hash: function(x: PX509): TC_ULONG; cdecl = nil;

    X509_issuer_name_hash_old: function(a: PX509): TC_ULONG; cdecl = nil;
    X509_subject_name_hash_old: function(x: PX509): TC_ULONG; cdecl = nil;

    X509_cmp: function(const a: PX509; const b: PX509): TC_INT; cdecl = nil;
    X509_NAME_cmp: function(const a: PX509_NAME; const b: PX509_NAME): TC_INT; cdecl = nil;
    X509_NAME_hash: function(x: PX509_NAME): TC_ULONG; cdecl = nil;
    X509_NAME_hash_old: function(x: PX509_NAME): TC_ULONG; cdecl = nil;

    X509_CRL_cmp: function(const a: PX509_CRL; const b: PX509_CRL): TC_INT; cdecl = nil;
    X509_CRL_match: function(const a: PX509_CRL; const b: PX509_CRL): TC_INT; cdecl = nil;

    X509_NAME_print: function(bp: PBIO; name: PX509_NAME; obase: TC_INT): TC_INT; cdecl = nil;
    X509_NAME_print_ex: function(_out: PBIO; nm: PX509_NAME; _indent: TC_INT; flags: TC_ULONG): TC_INT; cdecl = nil;
    X509_print_ex: function(bp: PBIO; x: PX509; nmflag: TC_ULONG; cflag: TC_ULONG): TC_INT; cdecl = nil;
    X509_ocspid_print: function(bp: PBIO; x: PX509): TC_INT; cdecl = nil;
    X509_CERT_AUX_print: function(bp: PBIO; x: PX509_CERT_AUX; _indent: TC_INT): TC_INT; cdecl = nil;
    X509_CRL_print: function(bp: PBIO; x: PX509_CRL): TC_INT; cdecl = nil;
    X509_REQ_print_ex: function(bp: PBIO; x: PX509_REQ; nmflag: TC_ULONG; cflag: TC_ULONG): TC_INT; cdecl = nil;
    X509_REQ_print: function(bp: PBIO; req: PX509_REQ): TC_INT; cdecl = nil;
    X509_NAME_entry_count: function(name: PX509_NAME): TC_INT; cdecl = nil;
    X509_NAME_get_text_by_NID: function(name: PX509_NAME; _nid: TC_INT; buf: PAnsiChar; _len: TC_INT): TC_INT; cdecl = nil;
    X509_NAME_get_text_by_OBJ: function(name: PX509_NAME; obj: PASN1_OBJECT; buf: PAnsiChar; _len: TC_INT): TC_INT; cdecl = nil;

    X509_NAME_get_index_by_NID: function(name: PX509_NAME; _nid: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_NAME_get_index_by_OBJ: function(name: PX509_NAME; obj: PASN1_OBJECT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_NAME_get_entry: function(name: PX509_NAME; _loc: TC_INT): PX509_NAME_ENTRY; cdecl = nil;
    X509_NAME_delete_entry: function(name: PX509_NAME; _loc: TC_INT): PX509_NAME_ENTRY; cdecl = nil;
    X509_NAME_add_entry: function(name: PX509_NAME; ne: PX509_NAME_ENTRY; _loc: TC_INT; _set: TC_INT): TC_INT; cdecl = nil;
    X509_NAME_add_entry_by_OBJ: function(name: PX509_NAME; obj: PASN1_OBJECT; _type: TC_INT; bytes: PAnsiChar; _len: TC_INT; _loc: TC_INT; _set: TC_INT): TC_INT; cdecl = nil;
    X509_NAME_add_entry_by_NID: function(name: PX509_NAME; _nid: TC_INT; _type: TC_INT; bytes: PAnsiChar; _len: TC_INT; _loc: TC_INT; _set: TC_INT): TC_INT; cdecl = nil;
    X509_NAME_ENTRY_create_by_txt: function(ne: PPX509_NAME_ENTRY; field: PAnsiChar; _type: TC_INT; bytes: PAnsiChar; _len: TC_INT): PX509_NAME_ENTRY; cdecl = nil;
    X509_NAME_ENTRY_create_by_NID: function(n: PPX509_NAME_ENTRY; _nid: TC_INT; _type: TC_INT; bytes: PAnsiChar; _len: TC_INT): PX509_NAME_ENTRY; cdecl = nil;
    X509_NAME_ENTRY_create_by_OBJ: function(n: PPX509_NAME_ENTRY; obj: PASN1_OBJECT; _type: TC_INT; bytes: PAnsiChar; _len: TC_INT): PX509_NAME_ENTRY; cdecl = nil;
    X509_NAME_ENTRY_set_object: function(ne: PX509_NAME_ENTRY; obj: PASN1_OBJECT): TC_INT; cdecl = nil;
    X509_NAME_ENTRY_set_data: function(ne: PX509_NAME_ENTRY; _type: TC_INT; const bytes: PAnsiChar; _len: TC_INT): TC_INT; cdecl = nil;
    X509_NAME_ENTRY_get_object: function(ne: PX509_NAME_ENTRY): PASN1_OBJECT; cdecl = nil;
    X509_NAME_ENTRY_get_data: function(ne: PX509_NAME_ENTRY): PASN1_STRING; cdecl = nil;

    X509v3_get_ext_count: function(const x: PSTACK_OF_X509_EXTENSION): TC_INT; cdecl = nil;
    X509v3_get_ext_by_NID: function(const x: PSTACK_OF_X509_EXTENSION; _nid: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509v3_get_ext_by_OBJ: function(const x: PSTACK_OF_X509_EXTENSION; obj: PASN1_OBJECT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509v3_get_ext_by_critical: function(const x: PSTACK_OF_X509_EXTENSION; _crit: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;

    X509v3_get_ext: function(const x: PSTACK_OF_X509_EXTENSION; _loc: TC_INT): PX509_EXTENSION; cdecl = nil;
    X509v3_delete_ext: function(x: PSTACK_OF_X509_EXTENSION; _loc: TC_INT): PX509_EXTENSION; cdecl = nil;
    X509v3_add_ext: function(x: PPSTACK_OF_X509_EXTENSION; ex: PX509_EXTENSION; _loc: TC_INT): PSTACK_OF_X509_EXTENSION; cdecl = nil;

    X509_get_ext_count: function(x: PX509): TC_INT; cdecl = nil;

    X509_get_ext_by_NID: function(x: PX509; _nid: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_get_ext_by_OBJ: function(x: PX509; obj: PASN1_OBJECT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_get_ext_by_critical: function(x: PX509;  _crit: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_get_ext: function(x: PX509;  _loc: TC_INT): PX509_EXTENSION; cdecl = nil;
    X509_delete_ext: function(x: PX509;  _loc: TC_INT): PX509_EXTENSION; cdecl = nil;
    X509_get_ext_d2i: function(x: PX509; _nid: TC_INT; var _crit: TC_INT; var _idx: TC_INT): Pointer; cdecl = nil;
    X509_add1_ext_i2d: function(x: PX509; _nid: TC_INT; value: Pointer; _crit: TC_INT; flags: TC_ULONG): TC_INT; cdecl = nil;

    X509_CRL_get_ext_count: function(x: PX509_CRL): TC_INT; cdecl = nil;
    X509_CRL_get_ext_by_NID: function(x: PX509_CRL; _nid: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_CRL_get_ext_by_OBJ: function(x: PX509_CRL; obj: PASN1_OBJECT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_CRL_get_ext_by_critical: function(x: PX509_CRL; _crit: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_CRL_get_ext: function(x: PX509_CRL; _loc: TC_INT): PX509_EXTENSION; cdecl = nil;
    X509_CRL_delete_ext: function(x: PX509_CRL; _loc: TC_INT): PX509_EXTENSION; cdecl = nil;
    X509_CRL_add_ext: function(x: PX509_CRL; ex: PX509_EXTENSION; _loc: TC_INT): TC_INT; cdecl = nil;
    X509_CRL_get_ext_d2i: function(x: PX509_CRL; _nid: TC_INT; var _crit: TC_INT; var _idx: TC_INT): Pointer; cdecl = nil;
    X509_CRL_add1_ext_i2d: function(x: PX509_CRL; _nid: TC_INT; value: Pointer; _crit: TC_INT; _flags: TC_ULONG): TC_INT; cdecl = nil;

    X509_REVOKED_get_ext_count: function(x: PX509_REVOKED): TC_INT; cdecl = nil;
    X509_REVOKED_get_ext_by_NID: function(x: PX509_REVOKED; _nid: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_REVOKED_get_ext_by_OBJ: function(x: PX509_REVOKED; obj: PASN1_OBJECT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_REVOKED_get_ext_by_critical: function(x: PX509_REVOKED; _crit: TC_INT;_lastpos: TC_INT): TC_INT; cdecl = nil;
    X509_REVOKED_get_ext: function(x: PX509_REVOKED; _loc: TC_INT): PX509_EXTENSION; cdecl = nil;
    X509_REVOKED_delete_ext: function(x: PX509_REVOKED; _loc: TC_INT): PX509_EXTENSION; cdecl = nil;
    X509_REVOKED_add_ext: function(x: PX509_REVOKED; ex: PX509_EXTENSION; _loc: TC_INT): TC_INT; cdecl = nil;
    X509_REVOKED_get_ext_d2i: function(x: PX509_REVOKED; _nid: TC_INT; var _crit: TC_INT; var _idx: TC_INT): Pointer; cdecl = nil;
    X509_REVOKED_add1_ext_i2d: function(x: PX509_REVOKED; _nid: TC_INT; value: Pointer; _crit: TC_INT;  _flags: TC_ULONG): TC_INT; cdecl = nil;

    X509_EXTENSION_create_by_OBJ: function(e: PPX509_EXTENSION; obj: PASN1_OBJECT; _crit: TC_INT; data: PASN1_OCTET_STRING): PX509_EXTENSION; cdecl = nil;
    X509_EXTENSION_set_object: function(ex: PX509_EXTENSION; obj: PASN1_OBJECT): TC_INT; cdecl = nil;
    X509_EXTENSION_set_critical: function(ex: PX509_EXTENSION; _crit: TC_INT): TC_INT; cdecl = nil;
    X509_EXTENSION_set_data: function(ex: PX509_EXTENSION; data: PASN1_OCTET_STRING): TC_INT; cdecl = nil;
    X509_EXTENSION_get_object: function(ex: PX509_EXTENSION): PASN1_OBJECT; cdecl = nil;
    X509_EXTENSION_get_data: function(ne: PX509_EXTENSION): PASN1_OCTET_STRING; cdecl = nil;
    X509_EXTENSION_get_critical: function(ex: PX509_EXTENSION): TC_INT; cdecl = nil;

    X509at_get_attr_count: function(const x: PSTACK_OF_X509_ATTRIBUTE): TC_INT; cdecl = nil;
    X509at_get_attr_by_NID: function(const x: PSTACK_OF_X509_ATTRIBUTE; _nid: TC_INT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509at_get_attr_by_OBJ: function(const sk: PSTACK_OF_X509_ATTRIBUTE; obj: PASN1_OBJECT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    X509at_get_attr: function(const x: PSTACK_OF_X509_ATTRIBUTE; _loc: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    X509at_delete_attr: function(x: PSTACK_OF_X509_ATTRIBUTE; _loc: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    X509at_add1_attr: function(x: PPSTACK_OF_X509_ATTRIBUTE; attr: PX509_ATTRIBUTE): PSTACK_OF_X509_ATTRIBUTE; cdecl = nil;
    X509at_add1_attr_by_OBJ: function(x: PPSTACK_OF_X509_ATTRIBUTE; const obj: PASN1_OBJECT; _type: TC_INT; bytes: PAnsiChar;_len: TC_INT): PSTACK_OF_X509_ATTRIBUTE; cdecl = nil;
    X509at_add1_attr_by_NID: function(x: PSTACK_OF_X509_ATTRIBUTE; _nid: TC_INT;_type: TC_INT;  bytes: PAnsiChar; _len: TC_INT): PSTACK_OF_X509_ATTRIBUTE; cdecl = nil;
    X509at_add1_attr_by_txt: function(x: PPSTACK_OF_X509_ATTRIBUTE; const attrname: PAnsiChar; _type: TC_INT;    const bytes: PAnsiChar; _len: TC_INT): PSTACK_OF_X509_ATTRIBUTE; cdecl = nil;
    X509at_get0_data_by_OBJ: function(x: PSTACK_OF_X509_ATTRIBUTE; obj: PASN1_OBJECT; _lastpos: TC_INT; _type: TC_INT): pointer; cdecl = nil;
    X509_ATTRIBUTE_create_by_NID: function(a: PPX509_ATTRIBUTE; _nid: TC_INT;_atrtype: TC_INT; const data: Pointer; _len: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    X509_ATTRIBUTE_create_by_OBJ: function(a: PPX509_ATTRIBUTE; const obj: PASN1_OBJECT; _atrtype: TC_INT; const data: Pointer; _len: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    X509_ATTRIBUTE_create_by_txt: function(a: PPX509_ATTRIBUTE; const atrname: PAnsiChar; _type: TC_INT; const bytes: PAnsiChar; _len: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    X509_ATTRIBUTE_set1_object: function(attr: PX509_ATTRIBUTE; const obj: PASN1_OBJECT): TC_INT; cdecl = nil;
    X509_ATTRIBUTE_set1_data: function(attr: PX509_ATTRIBUTE; _attrtype: TC_INT; const data: Pointer; _len: TC_INT): TC_INT; cdecl = nil;
    X509_ATTRIBUTE_get0_data: function(attr: PX509_ATTRIBUTE; _idx: TC_INT; _atrtype: TC_INT; data: Pointer): Pointer; cdecl = nil;
    X509_ATTRIBUTE_count: function(attr: PX509_ATTRIBUTE): TC_INT; cdecl = nil;
    X509_ATTRIBUTE_get0_object: function(attr: PX509_ATTRIBUTE): PASN1_OBJECT; cdecl = nil;
    X509_ATTRIBUTE_get0_type: function(attr: PX509_ATTRIBUTE; _idx: TC_INT): PASN1_TYPE; cdecl = nil;

    EVP_PKEY_get_attr_count: function(const key: PEVP_PKEY): TC_INT; cdecl = nil;
    EVP_PKEY_get_attr_by_NID: function(const key: PEVP_PKEY; _nid: TC_INT;_lastpos: TC_INT): TC_INT; cdecl = nil;
    EVP_PKEY_get_attr_by_OBJ: function(const key: PEVP_PKEY; obj: PASN1_OBJECT; _lastpos: TC_INT): TC_INT; cdecl = nil;
    EVP_PKEY_get_attr: function(const key: PEVP_PKEY; _loc: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    EVP_PKEY_delete_attr: function(key: PEVP_PKEY; _loc: TC_INT): PX509_ATTRIBUTE; cdecl = nil;
    EVP_PKEY_add1_attr: function(key: PEVP_PKEY;  attr: PX509_ATTRIBUTE): TC_INT; cdecl = nil;
    EVP_PKEY_add1_attr_by_OBJ: function(key: PEVP_PKEY; const obj: PASN1_OBJECT; _type: TC_INT; const bytes: PAnsiChar; _len: TC_INT): TC_INT; cdecl = nil;
    EVP_PKEY_add1_attr_by_NID: function(key: PEVP_PKEY; _nid: TC_INT; _type: TC_INT; const bytes: PAnsiChar; _len: TC_INT): TC_INT; cdecl = nil;
    EVP_PKEY_add1_attr_by_txt: function(key: PEVP_PKEY; const attrname: PAnsiChar; _type: TC_INT; const bytes: PAnsiChar; _len: TC_INT): TC_INT; cdecl = nil;

    X509_verify_cert: function(ctx: PX509_STORE_CTX): TC_INT; cdecl = nil;

    X509_find_by_issuer_and_serial: function(sk: PSTACK_OF_X509; name: PX509_NAME; serial: PASN1_INTEGER): PX509; cdecl = nil;
    X509_find_by_subject: function(sk: PSTACK_OF_X509; name: PX509_NAME): PX509; cdecl = nil;

    PKCS5_pbe_set0_algor: function(algor: PX509_ALGOR; _alg: TC_INT;_iter: TC_INT; const salt: PAnsiChar; _saltlen: TC_INT): TC_INT; cdecl = nil;

    PKCS5_pbe_set: function(_alg: TC_INT; _iter: TC_INT; const salt: PAnsiChar; _saltlen: TC_INT): PX509_ALGOR; cdecl = nil;
    PKCS5_pbe2_set: function(const cipher: PEVP_CIPHER; _iter: TC_INT; salt: PAnsiChar; _saltlen: TC_INT): PX509_ALGOR; cdecl = nil;
    PKCS5_pbe2_set_iv: function(const cipher: PEVP_CIPHER; _iter: TC_INT; salt: PAnsiChar; _saltlen: TC_INT; aiv: PAnsiChar; _prf_nid: TC_INT): PX509_ALGOR; cdecl = nil;

    PKCS5_pbkdf2_set: function(_iter: TC_INT; salt: PAnsiChar; _saltlen: TC_INT; _prf_nid: TC_INT;_keylen: TC_INT): PX509_ALGOR; cdecl = nil;

    EVP_PKCS82PKEY: function(p8: PPKCS8_PRIV_KEY_INFO): PEVP_PKEY; cdecl = nil;
    EVP_PKEY2PKCS8: function(pkey: PEVP_PKEY): PPKCS8_PRIV_KEY_INFO; cdecl = nil;
    EVP_PKEY2PKCS8_broken: function(pkey: PEVP_PKEY; _broken: TC_INT): PPKCS8_PRIV_KEY_INFO; cdecl = nil;
    PKCS8_set_broken: function(p8: PPKCS8_PRIV_KEY_INFO; _broken: TC_INT): PPKCS8_PRIV_KEY_INFO; cdecl = nil;

    PKCS8_pkey_set0: function(priv: PPKCS8_PRIV_KEY_INFO; aobj: PASN1_OBJECT; _version: TC_INT; _ptype: TC_INT; pval: Pointer; penc: PAnsiChar;_penclen: TC_INT): TC_INT; cdecl = nil;
    PKCS8_pkey_get0: function(p: PPASN1_OBJECT; pk: PPAnsiChar; var _ppklen: TC_INT; palg: PPX509_ALGOR; p8: PPKCS8_PRIV_KEY_INFO): TC_INT; cdecl = nil;

    X509_PUBKEY_set0_param: function(pub: PX509_PUBKEY; aobj: PASN1_OBJECT; _ptype: TC_INT; pval: Pointer; penc: PAnsiChar; _penclen: TC_INT): TC_INT; cdecl = nil;
    X509_PUBKEY_get0_param: function(p: PPASN1_OBJECT; pk: PPAnsiChar; var _ppklen: TC_INT; palg: PPX509_ALGOR; pub: PX509_PUBKEY): TC_INT; cdecl = nil;

    X509_check_trust: function(x: PX509;  _id: TC_INT;_flags: TC_INT): TC_INT; cdecl = nil;
    X509_TRUST_get_count: function: TC_INT; cdecl = nil;
    X509_TRUST_get0: function(_idx: TC_INT): PX509_TRUST; cdecl = nil;
    X509_TRUST_get_by_id: function(_id: TC_INT): TC_INT; cdecl = nil;

    X509_TRUST_cleanup: procedure; cdecl= nil;
    X509_TRUST_get_flags: function(xp: PX509_TRUST): TC_INT; cdecl = nil;
    X509_TRUST_get0_name: function(xp: PX509_TRUST): PAnsiChar; cdecl = nil;
    X509_TRUST_get_trust: function(xp: PX509_TRUST): TC_INT; cdecl = nil;

    ERR_load_X509_strings: procedure; cdecl = nil;

  PROXY_POLICY_new: function: PPROXY_POLICY; cdecl = nil;
  PROXY_POLICY_free: procedure(a: PPROXY_POLICY); cdecl = nil;
  d2i_PROXY_POLICY: function(a: PPPROXY_POLICY; _in: PPAnsiChar; len: TC_LONG): PPROXY_POLICY; cdecl = nil;
  i2d_PROXY_POLICY: function(a: PPROXY_POLICY; _out: PPAnsiChar): TC_INT; cdecl = nil;
  PROXY_POLICY_it: function: PASN1_ITEM; cdecl = nil;
  PROXY_CERT_INFO_EXTENSION_new: function: PPROXY_CERT_INFO_EXTENSION; cdecl = nil;
  PROXY_CERT_INFO_EXTENSION_free: procedure(a: PPROXY_CERT_INFO_EXTENSION); cdecl = nil;
  d2i_PROXY_CERT_INFO_EXTENSION: function(a: PPPROXY_CERT_INFO_EXTENSION; _in: PPAnsiChar; len: TC_LONG): PPROXY_CERT_INFO_EXTENSION; cdecl = nil;
  i2d_PROXY_CERT_INFO_EXTENSION: function(a: PPROXY_CERT_INFO_EXTENSION; _out: PPAnsiChar): TC_INT; cdecl = nil;
  PROXY_CERT_INFO_EXTENSION_it: function: PASN1_ITEM; cdecl = nil;
  BASIC_CONSTRAINTS_new: function: PBASIC_CONSTRAINTS; cdecl = nil;
  BASIC_CONSTRAINTS_free: procedure(a: PBASIC_CONSTRAINTS); cdecl = nil;
  d2i_BASIC_CONSTRAINTS: function(a: PPBASIC_CONSTRAINTS; _in: PPAnsiChar; len: TC_LONG): PBASIC_CONSTRAINTS; cdecl = nil;
  i2d_BASIC_CONSTRAINTS: function(a: PBASIC_CONSTRAINTS; _out: PPAnsiChar): TC_INT; cdecl = nil;
  BASIC_CONSTRAINTS_it: function: PASN1_ITEM; cdecl = nil;
  SXNET_new: function: PSXNET; cdecl = nil;
  SXNET_free: procedure(a: PSXNET); cdecl = nil;
  d2i_SXNET: function(a: PPSXNET; _in: PPAnsiChar; len: TC_LONG): PSXNET; cdecl = nil;
  i2d_SXNET: function(a: PSXNET; _out: PPAnsiChar): TC_INT; cdecl = nil;
  SXNET_it: function: PASN1_ITEM; cdecl = nil;
  SXNETID_new: function: PSXNETID; cdecl = nil;
  SXNETID_free: procedure(a: PSXNETID); cdecl = nil;
  d2i_SXNETID: function(a: PPSXNETID; _in: PPAnsiChar; len: TC_LONG): PSXNETID; cdecl = nil;
  i2d_SXNETID: function(a: PSXNETID; _out: PPAnsiChar): TC_INT; cdecl = nil;
  SXNETID_it: function: PASN1_ITEM; cdecl = nil;
  AUTHORITY_KEYID_new: function: PAUTHORITY_KEYID; cdecl = nil;
  AUTHORITY_KEYID_free: procedure(a: PAUTHORITY_KEYID); cdecl = nil;
  d2i_AUTHORITY_KEYID: function(a: PPAUTHORITY_KEYID; _in: PPAnsiChar; len: TC_LONG): PAUTHORITY_KEYID; cdecl = nil;
  i2d_AUTHORITY_KEYID: function(a: PAUTHORITY_KEYID; _out: PPAnsiChar): TC_INT; cdecl = nil;
  AUTHORITY_KEYID_it: function: PASN1_ITEM; cdecl = nil;
  PKEY_USAGE_PERIOD_new: function: PPKEY_USAGE_PERIOD; cdecl = nil;
  PKEY_USAGE_PERIOD_free: procedure(a: PPKEY_USAGE_PERIOD); cdecl = nil;
  d2i_PKEY_USAGE_PERIOD: function(a: PPPKEY_USAGE_PERIOD; _in: PPAnsiChar; len: TC_LONG): PPKEY_USAGE_PERIOD; cdecl = nil;
  i2d_PKEY_USAGE_PERIOD: function(a: PPKEY_USAGE_PERIOD; _out: PPAnsiChar): TC_INT; cdecl = nil;
  PKEY_USAGE_PERIOD_it: function: PASN1_ITEM; cdecl = nil;
  GENERAL_NAME_new: function: PGENERAL_NAME; cdecl = nil;
  GENERAL_NAME_free: procedure(a: PGENERAL_NAME); cdecl = nil;
  d2i_GENERAL_NAME: function(a: PPGENERAL_NAME; _in: PPAnsiChar; len: TC_LONG): PGENERAL_NAME; cdecl = nil;
  i2d_GENERAL_NAME: function(a: PGENERAL_NAME; _out: PPAnsiChar): TC_INT; cdecl = nil;
  GENERAL_NAME_it: function: PASN1_ITEM; cdecl = nil;
  GENERAL_NAMES_new: function: PGENERAL_NAMES; cdecl = nil;
  GENERAL_NAMES_free: procedure(a: PGENERAL_NAMES); cdecl = nil;
  d2i_GENERAL_NAMES: function(a: PPGENERAL_NAMES; _in: PPAnsiChar; len: TC_LONG): PGENERAL_NAMES; cdecl = nil;
  i2d_GENERAL_NAMES: function(a: PGENERAL_NAMES; _out: PPAnsiChar): TC_INT; cdecl = nil;
  GENERAL_NAMES_it: function: PASN1_ITEM; cdecl = nil;
  OTHERNAME_new: function: POTHERNAME; cdecl = nil;
  OTHERNAME_free: procedure(a: POTHERNAME); cdecl = nil;
  d2i_OTHERNAME: function(a: PPOTHERNAME; _in: PPAnsiChar; len: TC_LONG): POTHERNAME; cdecl = nil;
  i2d_OTHERNAME: function(a: POTHERNAME; _out: PPAnsiChar): TC_INT; cdecl = nil;
  OTHERNAME_it: function: PASN1_ITEM; cdecl = nil;
  EDIPARTYNAME_new: function: PEDIPARTYNAME; cdecl = nil;
  EDIPARTYNAME_free: procedure(a: PEDIPARTYNAME); cdecl = nil;
  d2i_EDIPARTYNAME: function(a: PPEDIPARTYNAME; _in: PPAnsiChar; len: TC_LONG): PEDIPARTYNAME; cdecl = nil;
  i2d_EDIPARTYNAME: function(a: PEDIPARTYNAME; _out: PPAnsiChar): TC_INT; cdecl = nil;
  EDIPARTYNAME_it: function: PASN1_ITEM; cdecl = nil;
  EXTENDED_KEY_USAGE_new: function: PEXTENDED_KEY_USAGE; cdecl = nil;
  EXTENDED_KEY_USAGE_free: procedure(a: PEXTENDED_KEY_USAGE); cdecl = nil;
  d2i_EXTENDED_KEY_USAGE: function(a: PPEXTENDED_KEY_USAGE; _in: PPAnsiChar; len: TC_LONG): PEXTENDED_KEY_USAGE; cdecl = nil;
  i2d_EXTENDED_KEY_USAGE: function(a: PEXTENDED_KEY_USAGE; _out: PPAnsiChar): TC_INT; cdecl = nil;
  EXTENDED_KEY_USAGE_it: function: PASN1_ITEM; cdecl = nil;
  CERTIFICATEPOLICIES_new: function: PCERTIFICATEPOLICIES; cdecl = nil;
  CERTIFICATEPOLICIES_free: procedure(a: PCERTIFICATEPOLICIES); cdecl = nil;
  d2i_CERTIFICATEPOLICIES: function(a: PPCERTIFICATEPOLICIES; _in: PPAnsiChar; len: TC_LONG): PCERTIFICATEPOLICIES; cdecl = nil;
  i2d_CERTIFICATEPOLICIES: function(a: PCERTIFICATEPOLICIES; _out: PPAnsiChar): TC_INT; cdecl = nil;
  CERTIFICATEPOLICIES_it: function: PASN1_ITEM; cdecl = nil;
  POLICYINFO_new: function: PPOLICYINFO; cdecl = nil;
  POLICYINFO_free: procedure(a: PPOLICYINFO); cdecl = nil;
  d2i_POLICYINFO: function(a: PPPOLICYINFO; _in: PPAnsiChar; len: TC_LONG): PPOLICYINFO; cdecl = nil;
  i2d_POLICYINFO: function(a: PPOLICYINFO; _out: PPAnsiChar): TC_INT; cdecl = nil;
  POLICYINFO_it: function: PASN1_ITEM; cdecl = nil;
  POLICYQUALINFO_new: function: PPOLICYQUALINFO; cdecl = nil;
  POLICYQUALINFO_free: procedure(a: PPOLICYQUALINFO); cdecl = nil;
  d2i_POLICYQUALINFO: function(a: PPPOLICYQUALINFO; _in: PPAnsiChar; len: TC_LONG): PPOLICYQUALINFO; cdecl = nil;
  i2d_POLICYQUALINFO: function(a: PPOLICYQUALINFO; _out: PPAnsiChar): TC_INT; cdecl = nil;
  POLICYQUALINFO_it: function: PASN1_ITEM; cdecl = nil;
  USERNOTICE_new: function: PUSERNOTICE; cdecl = nil;
  USERNOTICE_free: procedure(a: PUSERNOTICE); cdecl = nil;
  d2i_USERNOTICE: function(a: PPUSERNOTICE; _in: PPAnsiChar; len: TC_LONG): PUSERNOTICE; cdecl = nil;
  i2d_USERNOTICE: function(a: PUSERNOTICE; _out: PPAnsiChar): TC_INT; cdecl = nil;
  USERNOTICE_it: function: PASN1_ITEM; cdecl = nil;
  NOTICEREF_new: function: PNOTICEREF; cdecl = nil;
  NOTICEREF_free: procedure(a: PNOTICEREF); cdecl = nil;
  d2i_NOTICEREF: function(a: PPNOTICEREF; _in: PPAnsiChar; len: TC_LONG): PNOTICEREF; cdecl = nil;
  i2d_NOTICEREF: function(a: PNOTICEREF; _out: PPAnsiChar): TC_INT; cdecl = nil;
  NOTICEREF_it: function: PASN1_ITEM; cdecl = nil;
  CRL_DIST_POINTS_new: function: PCRL_DIST_POINTS; cdecl = nil;
  CRL_DIST_POINTS_free: procedure(a: PCRL_DIST_POINTS); cdecl = nil;
  d2i_CRL_DIST_POINTS: function(a: PPCRL_DIST_POINTS; _in: PPAnsiChar; len: TC_LONG): PCRL_DIST_POINTS; cdecl = nil;
  i2d_CRL_DIST_POINTS: function(a: PCRL_DIST_POINTS; _out: PPAnsiChar): TC_INT; cdecl = nil;
  CRL_DIST_POINTS_it: function: PASN1_ITEM; cdecl = nil;
  DIST_POINT_new: function: PDIST_POINT; cdecl = nil;
  DIST_POINT_free: procedure(a: PDIST_POINT); cdecl = nil;
  d2i_DIST_POINT: function(a: PPDIST_POINT; _in: PPAnsiChar; len: TC_LONG): PDIST_POINT; cdecl = nil;
  i2d_DIST_POINT: function(a: PDIST_POINT; _out: PPAnsiChar): TC_INT; cdecl = nil;
  DIST_POINT_it: function: PASN1_ITEM; cdecl = nil;
  DIST_POINT_NAME_new: function: PDIST_POINT_NAME; cdecl = nil;
  DIST_POINT_NAME_free: procedure(a: PDIST_POINT_NAME); cdecl = nil;
  d2i_DIST_POINT_NAME: function(a: PPDIST_POINT_NAME; _in: PPAnsiChar; len: TC_LONG): PDIST_POINT_NAME; cdecl = nil;
  i2d_DIST_POINT_NAME: function(a: PDIST_POINT_NAME; _out: PPAnsiChar): TC_INT; cdecl = nil;
  DIST_POINT_NAME_it: function: PASN1_ITEM; cdecl = nil;
  ISSUING_DIST_POINT_new: function: PISSUING_DIST_POINT; cdecl = nil;
  ISSUING_DIST_POINT_free: procedure(a: PISSUING_DIST_POINT); cdecl = nil;
  d2i_ISSUING_DIST_POINT: function(a: PPISSUING_DIST_POINT; _in: PPAnsiChar; len: TC_LONG): PISSUING_DIST_POINT; cdecl = nil;
  i2d_ISSUING_DIST_POINT: function(a: PISSUING_DIST_POINT; _out: PPAnsiChar): TC_INT; cdecl = nil;
  ISSUING_DIST_POINT_it: function: PASN1_ITEM; cdecl = nil;
  ACCESS_DESCRIPTION_new: function: PACCESS_DESCRIPTION; cdecl = nil;
  ACCESS_DESCRIPTION_free: procedure(a: PACCESS_DESCRIPTION); cdecl = nil;
  d2i_ACCESS_DESCRIPTION: function(a: PPACCESS_DESCRIPTION; _in: PPAnsiChar; len: TC_LONG): PACCESS_DESCRIPTION; cdecl = nil;
  i2d_ACCESS_DESCRIPTION: function(a: PACCESS_DESCRIPTION; _out: PPAnsiChar): TC_INT; cdecl = nil;
  ACCESS_DESCRIPTION_it: function: PASN1_ITEM; cdecl = nil;
  AUTHORITY_INFO_ACCESS_new: function: PAUTHORITY_INFO_ACCESS; cdecl = nil;
  AUTHORITY_INFO_ACCESS_free: procedure(a: PAUTHORITY_INFO_ACCESS); cdecl = nil;
  d2i_AUTHORITY_INFO_ACCESS: function(a: PPAUTHORITY_INFO_ACCESS; _in: PPAnsiChar; len: TC_LONG): PAUTHORITY_INFO_ACCESS; cdecl = nil;
  i2d_AUTHORITY_INFO_ACCESS: function(a: PAUTHORITY_INFO_ACCESS; _out: PPAnsiChar): TC_INT; cdecl = nil;
  AUTHORITY_INFO_ACCESS_it: function: PASN1_ITEM; cdecl = nil;

  SXNET_add_id_asc: function(psx: PPSXNET;  _zone: PAnsiChar;  _user: PAnsiChar;_userlen: TC_INT): TC_INT; cdecl = nil;
  SXNET_add_id_ulong: function(psx: PPSXNET; e: TC_ULONG; _user: PAnsiChar;_userlen: TC_INT): TC_INT; cdecl = nil;
  SXNET_add_id_INTEGER: function(psx: PPSXNET; izone: PASN1_INTEGER;  _user: PAnsiChar; _userlen: TC_INT): TC_INT; cdecl = nil;
  SXNET_get_id_asc: function(sx: PSXNET; _zone: PAnsiChar): PASN1_OCTET_STRING; cdecl = nil;
  SXNET_get_id_ulong: function(sx: PSXNET; e: TC_ULONG): PASN1_OCTET_STRING; cdecl = nil;
  SXNET_get_id_INTEGER: function(sx: PSXNET; zone: PASN1_INTEGER): PASN1_OCTET_STRING; cdecl = nil;
  GENERAL_NAME_cmp: function(a: PGENERAL_NAME; b: PGENERAL_NAME): TC_INT; cdecl = nil;
  v2i_ASN1_BIT_STRING: function(method: PX509V3_EXT_METHOD; ctx: PX509V3_CTX; nval: PSTACK_OF_CONF_VALUE): PASN1_BIT_STRING; cdecl = nil;
  i2v_ASN1_BIT_STRING: function(method: PX509V3_EXT_METHOD;bits: PASN1_BIT_STRING; extlist: PSTACK_OF_CONF_VALUE): PSTACK_OF_CONF_VALUE; cdecl = nil;
  i2v_GENERAL_NAME: function(method: PX509V3_EXT_METHOD; gen: PGENERAL_NAME; ret: PSTACK_OF_CONF_VALUE): PSTACK_OF_CONF_VALUE; cdecl = nil;
  GENERAL_NAME_print: function(_out: PBIO; gen: PGENERAL_NAME): TC_INT; cdecl = nil;
  i2v_GENERAL_NAMES: function(method: PX509V3_EXT_METHOD; gen: PGENERAL_NAMES; extlist: PSTACK_OF_CONF_VALUE): PSTACK_OF_CONF_VALUE; cdecl = nil;
  v2i_GENERAL_NAMES: function(const method: PX509V3_EXT_METHOD; ctx: PX509V3_CTX; nval: PSTACK_OF_CONF_VALUE): PGENERAL_NAMES; cdecl = nil;
  OTHERNAME_cmp: function(a: POTHERNAME; b: POTHERNAME): TC_INT; cdecl = nil;
  GENERAL_NAME_set0_value: procedure(a: PGENERAL_NAME; _type: TC_INT; value: Pointer); cdecl = nil;
  GENERAL_NAME_get0_value: function(a: PGENERAL_NAME; var _ptype: TC_INT): Pointer; cdecl = nil;
  GENERAL_NAME_set0_othername: function(gen: PGENERAL_NAME; oid: PASN1_OBJECT; value: PASN1_TYPE): TC_INT; cdecl = nil;
  GENERAL_NAME_get0_otherName: function(gen: PGENERAL_NAME; poid: PPASN1_OBJECT; pvalue: PPASN1_TYPE): TC_INT; cdecl = nil;
  i2s_ASN1_OCTET_STRING: function(method: PX509V3_EXT_METHOD; ia5: PASN1_OCTET_STRING): PAnsiChar; cdecl = nil;
  s2i_ASN1_OCTET_STRING: function(method: PX509V3_EXT_METHOD; ctx: PX509V3_CTX;  _str: PAnsiChar): PASN1_OCTET_STRING; cdecl = nil;
  i2a_ACCESS_DESCRIPTION: function(bp: PBIO;  a: PACCESS_DESCRIPTION): TC_INT; cdecl = nil;
  DIST_POINT_set_dpname: function(dpn: PDIST_POINT_NAME; iname: PX509_NAME): TC_INT; cdecl = nil;
  NAME_CONSTRAINTS_check: function(x: PX509; nc: PNAME_CONSTRAINTS): TC_INT; cdecl = nil;
  a2i_GENERAL_NAME: function(_out: PGENERAL_NAME; const method: PX509V3_EXT_METHOD; ctx: PX509V3_CTX; _gen_type: TC_INT;  _value: PAnsiChar; _is_nc: TC_INT): PGENERAL_NAME; cdecl = nil;
  v2i_GENERAL_NAME: function(const method: PX509V3_EXT_METHOD; ctx: PX509V3_CTX; cnf: PCONF_VALUE): PGENERAL_NAME; cdecl = nil;
  v2i_GENERAL_NAME_ex: function(_out: PGENERAL_NAME; const method: PX509V3_EXT_METHOD; ctx: PX509V3_CTX; cnf: PCONF_VALUE; _is_nc: TC_INT): PGENERAL_NAME; cdecl = nil;
  X509V3_conf_free: procedure(val: PCONF_VALUE); cdecl = nil;
  X509V3_EXT_nconf_nid: function(conf: PCONF; ctx: PX509V3_CTX; _ext_nid: TC_INT;  _value: PAnsiChar): PX509_EXTENSION; cdecl = nil;
  X509V3_EXT_nconf: function(PCONF: Pconf; ctx: PX509V3_CTX;  _name: PAnsiChar;  _value: PAnsiChar): PX509_EXTENSION; cdecl = nil;
  X509V3_EXT_add_nconf_sk: function(conf: PCONF; ctx: PX509V3_CTX;  _section: PAnsiChar; sk: PPSTACK_OF_X509_EXTENSION): TC_INT; cdecl = nil;
  X509V3_EXT_add_nconf: function(conf: PCONF; ctx: PX509V3_CTX;  _section: PAnsiChar; cert: PX509): TC_INT; cdecl = nil;
  X509V3_EXT_REQ_add_nconf: function(conf: PCONF; ctx: PX509V3_CTX;  _section: PAnsiChar; req: PX509_REQ): TC_INT; cdecl = nil;
  X509V3_EXT_CRL_add_nconf: function(conf: PCONF; ctx: PX509V3_CTX;  _section: PAnsiChar; crl: PX509_CRL): TC_INT; cdecl = nil;

  X509V3_EXT_conf_nid: function(conf: PLHASH_OF_CONF_VALUE; ctx: PX509V3_CTX;   _ext_nid: TC_INT;  _value: PAnsiChar): PX509_EXTENSION; cdecl = nil;
  X509V3_EXT_conf: function(conf: PLHASH_OF_CONF_VALUE; ctx: PX509V3_CTX; _name: PAnsiChar;  _value: PAnsiChar): PX509_EXTENSION; cdecl = nil;
  X509V3_EXT_add_conf: function(conf: PLHASH_OF_CONF_VALUE; ctx: PX509V3_CTX;  _section: PAnsiChar; cert: PX509): TC_INT; cdecl = nil;
  X509V3_EXT_REQ_add_conf: function(conf: PLHASH_OF_CONF_VALUE; ctx: PX509V3_CTX; _section: PAnsiChar;  _req: PAnsiChar): TC_INT; cdecl = nil;
  X509V3_EXT_CRL_add_conf: function(conf: PLHASH_OF_CONF_VALUE; ctx: PX509V3_CTX;   _section: PAnsiChar; crl: PX509_CRL): TC_INT; cdecl = nil;
  X509V3_add_value_bool_nf: function( _name: PAnsiChar; _asn1_bool: TC_INT; extlist: PPSTACK_OF_CONF_VALUE): TC_INT; cdecl = nil;
  X509V3_get_value_bool: function(value: PCONF_VALUE; var _asn1_bool: TC_INT): TC_INT; cdecl = nil;
  X509V3_get_value_int: function(value: PCONF_VALUE; aint: PPASN1_INTEGER): TC_INT; cdecl = nil;
  X509V3_set_nconf: procedure(ctx: PX509V3_CTX; conf: PCONF); cdecl = nil;
  X509V3_set_conf_lhash: procedure(ctx: PX509V3_CTX; lhash: PLHASH_OF_CONF_VALUE); cdecl = nil;

  X509V3_get_string: function(ctx: PX509V3_CTX;  _name: PAnsiChar;  _section: PAnsiChar): PAnsiChar; cdecl = nil;
  X509V3_get_section: function(ctx: PX509V3_CTX;  _section: PAnsiChar): PSTACK_OF_CONF_VALUE; cdecl = nil;
  X509V3_string_free: procedure(ctx: PX509V3_CTX;  _str: PAnsiChar); cdecl = nil;
  X509V3_section_free: procedure( ctx: PX509V3_CTX; _section: PSTACK_OF_CONF_VALUE); cdecl = nil;

  X509V3_add_value: function(const  _name: PAnsiChar; const  _value: PAnsiChar; extlist: PPSTACK_OF_CONF_VALUE): TC_INT; cdecl = nil;
  X509V3_add_value_uchar: function(const  _name: PAnsiChar; const value: Pchar; extlist: PPSTACK_OF_CONF_VALUE): TC_INT; cdecl = nil;
  X509V3_add_value_bool: function(const name: Pchar; _asn1_bool: TC_INT; extlist: PPSTACK_OF_CONF_VALUE): TC_INT; cdecl = nil;
  X509V3_add_value_int: function(const  _name: PAnsiChar; aint: PASN1_INTEGER; extlist: PPSTACK_OF_CONF_VALUE): TC_INT; cdecl = nil;
  i2s_ASN1_INTEGER: function(meth: PX509V3_EXT_METHOD; aint: PASN1_INTEGER): PAnsiChar; cdecl = nil;
  s2i_ASN1_INTEGER: function(meth: PX509V3_EXT_METHOD;  _value: PAnsiChar): PASN1_INTEGER; cdecl = nil;
  i2s_ASN1_ENUMERATED: function(meth: PX509V3_EXT_METHOD; aint: PASN1_ENUMERATED): PAnsiChar; cdecl = nil;
  i2s_ASN1_ENUMERATED_TABLE: function(meth: PX509V3_EXT_METHOD; aint: PASN1_ENUMERATED): PAnsiChar; cdecl = nil;
  X509V3_EXT_add: function(ext: PX509V3_EXT_METHOD): TC_INT; cdecl = nil;
  X509V3_EXT_add_list: function(extlist: PX509V3_EXT_METHOD): TC_INT; cdecl = nil;
  X509V3_EXT_add_alias: function(_nid_to: TC_INT; _nid_from: TC_INT): TC_INT; cdecl = nil;
  X509V3_EXT_cleanup: procedure; cdecl = nil;

  X509V3_EXT_get: function(ext: PX509_EXTENSION): PX509V3_EXT_METHOD; cdecl = nil;
  X509V3_EXT_get_nid: function(_nid: TC_INT): PX509V3_EXT_METHOD; cdecl = nil;
  X509V3_add_standard_extensions: function: TC_INT; cdecl = nil;
  X509V3_parse_list: function(const  _line: PAnsiChar): PSTAcK_OF_CONF_VALUE; cdecl = nil;
  X509V3_EXT_d2i: function(ext: PX509_EXTENSION): pointer; cdecl = nil;
  X509V3_get_d2i: function(x: PSTACK_OF_X509_EXTENSION; _nid: TC_INT; var _crit: TC_INT; var _idx: TC_INT): Pointer; cdecl = nil;


  X509V3_EXT_i2d: function(_ext_nid: TC_INT; _crit: TC_INT; ext_struc: pointer): PX509_EXTENSION; cdecl = nil;
  X509V3_add1_i2d: function(x: PPSTACK_OF_X509_EXTENSION; _nid: TC_INT; value: pointer; _crit: TC_INT; s: TC_ULONG): TC_INT; cdecl = nil;

  hex_to_string: function(const  _buffer: PAnsiChar; len: TC_LONG): PAnsiChar; cdecl = nil;
  string_to_hex: function(const  _str: PAnsiChar; var len: TC_LONG): PAnsiChar; cdecl = nil;
  name_cmp: function(const  _name: PAnsiChar; const  _cmp: PAnsiChar): TC_INT; cdecl = nil;

  X509V3_EXT_val_prn: procedure(_out: PBIO; val: PSTACK_OF_CONF_VALUE; _indent: TC_INT; _ml: TC_INT); cdecl = nil;
  X509V3_EXT_print: function(_out: PBIO; ext: PX509_EXTENSION; g: TC_ULONG; _indent: TC_INT): TC_INT; cdecl = nil;

  X509V3_extensions_print: function(_out: PBIO; _title: PAnsiChar; exts: PSTACK_OF_X509_EXTENSION; g: TC_ULONG; _indent: TC_INT): TC_INT; cdecl = nil;

  X509_check_ca: function(x: PX509): TC_INT; cdecl = nil;
  X509_check_purpose: function(x: PX509; _id: TC_INT; _ca: TC_INT): TC_INT; cdecl = nil;
  X509_supported_extension: function(ex: PX509_EXTENSION): TC_INT; cdecl = nil;
  X509_PURPOSE_set: function(var _p: TC_INT; _purpose: TC_INT): TC_INT; cdecl = nil;
  X509_check_issued: function(issuer: PX509; subject: PX509): TC_INT; cdecl = nil;
  X509_check_akid: function(issuer: PX509; akid: PAUTHORITY_KEYID): TC_INT; cdecl = nil;
  X509_PURPOSE_get_count: function: TC_INT; cdecl = nil;
  X509_PURPOSE_get0: function(_idx: TC_INT): PX509_PURPOSE; cdecl = nil;
  X509_PURPOSE_get_by_sname: function( _sname: PAnsiChar): TC_INT; cdecl = nil;
  X509_PURPOSE_get_by_id: function(_id: TC_INT): TC_INT; cdecl = nil;
  X509_PURPOSE_add: function(_id: TC_INT; _trust: TC_INT; _flags: TC_INT;ck: X509_CHECK_PURPOSE_FUNC;  _name: PAnsiChar;  _sname: PAnsiChar; arg: Pointer): TC_INT; cdecl = nil;
  X509_PURPOSE_get0_name: function(xp: PX509_PURPOSE): PAnsiChar; cdecl = nil;
  X509_PURPOSE_get0_sname: function(xp: PX509_PURPOSE): PAnsiChar; cdecl = nil;
  X509_PURPOSE_get_trust: function(xp: PX509_PURPOSE): TC_INT; cdecl = nil;
  X509_PURPOSE_cleanup: procedure; cdecl = nil;
  X509_PURPOSE_get_id: function(p: PX509_PURPOSE): TC_INT; cdecl = nil;

  X509_get1_email: function(x: PX509): PSTACK_OF_OPENSSL_STRING; cdecl = nil;
  X509_REQ_get1_email: function(x: PX509): PSTACK_OF_OPENSSL_STRING; cdecl = nil;
  X509_email_free: procedure(sk: PSTACK_OF_OPENSSL_STRING); cdecl = nil;
  X509_get1_ocsp: function(x: PX509): PSTACK_OF_OPENSSL_STRING; cdecl = nil;

  a2i_IPADDRESS: function(const  _ipasc: PAnsiChar): PASN1_OCTET_STRING; cdecl = nil;
  a2i_IPADDRESS_NC: function(const  _ipasc: PAnsiChar): PASN1_OCTET_STRING; cdecl = nil;
  a2i_ipadd: function(_ipout: PAnsiChar; const  _ipasc: PAnsiChar): TC_INT; cdecl = nil;
  X509V3_NAME_from_section: function( _nm: PAnsiChar; dn_sk: PSTACK_OF_CONF_VALUE; e: TC_ULONG): TC_INT; cdecl = nil;

  X509_POLICY_NODE_print: procedure(_out: PBIO; node: PX509_POLICY_NODE; _indent: TC_INT); cdecl = nil;


  X509_STORE_new: function: PX509_STORE; cdecl = nil;
  X509_STORE_free: procedure(v : PX509_STORE); cdecl = nil;
  X509_STORE_add_cert: function(ctx: PX509_STORE; x: PX509): TC_INT; cdecl = nil;
  X509_STORE_add_crl: function(ctx: PX509_STORE; x: PX509_CRL):  TC_INT; cdecl = nil;


procedure SSL_InitX509;

implementation
uses ssl_lib;

procedure SSL_InitX509;
begin
 if @X509_new = nil then
  begin
    @X509_new := LoadFunctionCLib('X509_new');
    @X509_free := LoadFunctionCLib('X509_free');
    @X509_NAME_new := LoadFunctionCLib('X509_NAME_new');
    @X509_NAME_free := LoadFunctionCLib('X509_NAME_free');
    @X509_REQ_new := LoadFunctionCLib('X509_REQ_new');
    @X509_REQ_free := LoadFunctionCLib('X509_REQ_free');
    @X509_to_X509_REQ := LoadFunctionCLib('X509_to_X509_REQ');
    @X509_NAME_add_entry_by_txt := LoadFunctionCLib('X509_NAME_add_entry_by_txt');
    @X509_INFO_free := LoadFunctionCLib('X509_INFO_free');
    @X509_set_version := LoadFunctionCLib('X509_set_version');
    @X509_get_serialNumber := LoadFunctionCLib('X509_get_serialNumber');
    @X509_gmtime_adj := LoadFunctionCLib('X509_gmtime_adj');
    @X509_set_notBefore := LoadFunctionCLib('X509_set_notBefore');
    @X509_set_notAfter := LoadFunctionCLib('X509_set_notAfter');
    @X509_set_pubkey := LoadFunctionCLib('X509_set_pubkey');
    @X509_REQ_set_pubkey := LoadFunctionCLib('X509_REQ_set_pubkey');
    @X509_sign := LoadFunctionCLib('X509_sign');
    @X509_REQ_sign := LoadFunctionCLib('X509_REQ_sign');
    @X509_REQ_add_extensions := LoadFunctionCLib('X509_REQ_add_extensions');
    @X509V3_EXT_conf_nid := LoadFunctionCLib('X509V3_EXT_conf_nid');
    @X509_EXTENSION_create_by_NID := LoadFunctionCLib('X509_EXTENSION_create_by_NID');
    @X509V3_set_ctx := LoadFunctionCLib('X509V3_set_ctx');
    @X509_EXTENSION_free := LoadFunctionCLib('X509_EXTENSION_free');
    @X509_add_ext := LoadFunctionCLib('X509_add_ext');
    @X509_print := LoadFunctionCLib('X509_print');
    @X509_STORE_add_lookup := LoadFunctionCLib('X509_STORE_add_lookup');
    @X509_STORE_load_locations := LoadFunctionCLib('X509_STORE_load_locations');

    @i2d_PUBKEY_bio:= LoadFunctionCLib('i2d_PUBKEY_bio');
    @d2i_PUBKEY_bio:= LoadFunctionCLib('d2i_PUBKEY_bio');
    @i2d_PrivateKey_bio:= LoadFunctionCLib('i2d_PrivateKey_bio');
    @d2i_PrivateKey_bio:= LoadFunctionCLib('d2i_PrivateKey_bio');

    @X509_CRL_set_default_method:= LoadFunctionCLib('X509_CRL_set_default_method');
    @X509_CRL_METHOD_free:= LoadFunctionCLib('X509_CRL_METHOD_free');
    @X509_CRL_set_meth_data:= LoadFunctionCLib('X509_CRL_set_meth_data');
    @X509_CRL_get_meth_data:= LoadFunctionCLib('X509_CRL_get_meth_data');
    @X509_verify_cert_error_string:= LoadFunctionCLib('X509_verify_cert_error_string');
    @X509_verify:= LoadFunctionCLib('X509_verify');
    @X509_REQ_verify:= LoadFunctionCLib('X509_REQ_verify');
    @X509_CRL_verify:= LoadFunctionCLib('X509_CRL_verify');
    @NETSCAPE_SPKI_verify:= LoadFunctionCLib('NETSCAPE_SPKI_verify');
    @NETSCAPE_SPKI_b64_decode:= LoadFunctionCLib('NETSCAPE_SPKI_b64_decode');
    @NETSCAPE_SPKI_b64_encode:= LoadFunctionCLib('NETSCAPE_SPKI_b64_encode');
    @NETSCAPE_SPKI_get_pubkey:= LoadFunctionCLib('NETSCAPE_SPKI_get_pubkey');
    @NETSCAPE_SPKI_set_pubkey:= LoadFunctionCLib('NETSCAPE_SPKI_set_pubkey');
    @NETSCAPE_SPKI_print:= LoadFunctionCLib('NETSCAPE_SPKI_print');
    @X509_signature_dump:= LoadFunctionCLib('X509_signature_dump');
    @X509_signature_print:= LoadFunctionCLib('X509_signature_print');
    @X509_sign_ctx:= LoadFunctionCLib('X509_sign_ctx');
    @X509_REQ_sign_ctx:= LoadFunctionCLib('X509_REQ_sign_ctx');
    @X509_CRL_sign:= LoadFunctionCLib('X509_CRL_sign');
    @X509_CRL_sign_ctx:= LoadFunctionCLib('X509_CRL_sign_ctx');
    @NETSCAPE_SPKI_sign:= LoadFunctionCLib('NETSCAPE_SPKI_sign');
    @X509_pubkey_digest:= LoadFunctionCLib('X509_pubkey_digest');
    @X509_digest:= LoadFunctionCLib('X509_digest');
    @X509_CRL_digest:= LoadFunctionCLib('X509_CRL_digest');
    @X509_REQ_digest:= LoadFunctionCLib('X509_REQ_digest');
    @X509_NAME_digest:= LoadFunctionCLib('X509_NAME_digest');
    @d2i_X509_bio:= LoadFunctionCLib('d2i_X509_bio');
    @i2d_X509_bio:= LoadFunctionCLib('i2d_X509_bio');
    @d2i_X509_CRL_bio:= LoadFunctionCLib('d2i_X509_CRL_bio');
    @i2d_X509_CRL_bio:= LoadFunctionCLib('i2d_X509_CRL_bio');
    @d2i_X509_REQ_bio:= LoadFunctionCLib('d2i_X509_REQ_bio');
    @i2d_X509_REQ_bio:= LoadFunctionCLib('i2d_X509_REQ_bio');
    @d2i_RSAPrivateKey_bio:= LoadFunctionCLib('d2i_RSAPrivateKey_bio');
    @i2d_RSAPrivateKey_bio:= LoadFunctionCLib('i2d_RSAPrivateKey_bio');
    @d2i_RSAPublicKey_bio:= LoadFunctionCLib('d2i_RSAPublicKey_bio');
    @i2d_RSAPublicKey_bio:= LoadFunctionCLib('i2d_RSAPublicKey_bio');
    @d2i_RSA_PUBKEY_bio:= LoadFunctionCLib('d2i_RSA_PUBKEY_bio');
    @i2d_RSA_PUBKEY_bio:= LoadFunctionCLib('i2d_RSA_PUBKEY_bio');
    @d2i_DSA_PUBKEY_bio:= LoadFunctionCLib('d2i_DSA_PUBKEY_bio');
    @i2d_DSA_PUBKEY_bio:= LoadFunctionCLib('i2d_DSA_PUBKEY_bio');
    @d2i_DSAPrivateKey_bio:= LoadFunctionCLib('d2i_DSAPrivateKey_bio');
    @i2d_DSAPrivateKey_bio:= LoadFunctionCLib('i2d_DSAPrivateKey_bio');
    @d2i_EC_PUBKEY_bio:= LoadFunctionCLib('d2i_EC_PUBKEY_bio');
    @i2d_EC_PUBKEY_bio:= LoadFunctionCLib('i2d_EC_PUBKEY_bio');
    @d2i_ECPrivateKey_bio:= LoadFunctionCLib('d2i_ECPrivateKey_bio');
    @i2d_ECPrivateKey_bio:= LoadFunctionCLib('i2d_ECPrivateKey_bio');
    @d2i_PKCS8_bio:= LoadFunctionCLib('d2i_PKCS8_bio');
    @i2d_PKCS8_bio:= LoadFunctionCLib('i2d_PKCS8_bio');
    @d2i_PKCS8_PRIV_KEY_INFO_bio:= LoadFunctionCLib('d2i_PKCS8_PRIV_KEY_INFO_bio');
    @i2d_PKCS8_PRIV_KEY_INFO_bio:= LoadFunctionCLib('i2d_PKCS8_PRIV_KEY_INFO_bio');
    @i2d_PKCS8PrivateKeyInfo_bio:= LoadFunctionCLib('i2d_PKCS8PrivateKeyInfo_bio');

    @X509_dup:= LoadFunctionCLib('X509_dup');
    @X509_ATTRIBUTE_dup:= LoadFunctionCLib('X509_ATTRIBUTE_dup');
    @X509_EXTENSION_dup:= LoadFunctionCLib('X509_EXTENSION_dup');
    @X509_CRL_dup:= LoadFunctionCLib('X509_CRL_dup');
    @X509_REQ_dup:= LoadFunctionCLib('X509_REQ_dup');

    @X509_ALGOR_new:= LoadFunctionCLib('X509_ALGOR_new');
    @X509_ALGOR_free:= LoadFunctionCLib('X509_ALGOR_free');
    @X509_ALGOR_dup:= LoadFunctionCLib('X509_ALGOR_dup');
    @X509_ALGOR_set0:= LoadFunctionCLib('X509_ALGOR_set0');
    @X509_ALGOR_get0:= LoadFunctionCLib('X509_ALGOR_get0');
    @X509_ALGOR_set_md:= LoadFunctionCLib('X509_ALGOR_set_md');
    @X509_ALGOR_it := LoadFunctionCLib('X509_ALGOR_it');
    @d2i_X509_ALGOR:= LoadFunctionCLib('d2i_X509_ALGOR');
    @i2d_X509_ALGOR:= LoadFunctionCLib('i2d_X509_ALGOR');

    @X509_NAME_dup:= LoadFunctionCLib('X509_NAME_dup');
    @X509_NAME_ENTRY_dup:= LoadFunctionCLib('X509_NAME_ENTRY_dup');
    @X509_cmp_time:= LoadFunctionCLib('X509_cmp_time');
    @X509_cmp_current_time:= LoadFunctionCLib('X509_cmp_current_time');
    @X509_time_adj:= LoadFunctionCLib('X509_time_adj');
    @X509_time_adj_ex:= LoadFunctionCLib('X509_time_adj_ex');
    @X509_gmtime_adj:= LoadFunctionCLib('X509_gmtime_adj');
    @X509_get_default_cert_area:= LoadFunctionCLib('X509_get_default_cert_area');
    @X509_get_default_cert_dir:= LoadFunctionCLib('X509_get_default_cert_dir');
    @X509_get_default_cert_file:= LoadFunctionCLib('X509_get_default_cert_file');
    @X509_get_default_cert_dir_env:= LoadFunctionCLib('X509_get_default_cert_dir_env');
    @X509_get_default_cert_file_env:= LoadFunctionCLib('X509_get_default_cert_file_env');
    @X509_get_default_private_dir:= LoadFunctionCLib('X509_get_default_private_dir');
    @X509_to_X509_REQ:= LoadFunctionCLib('X509_to_X509_REQ');
    @X509_REQ_to_X509:= LoadFunctionCLib('X509_REQ_to_X509');
    @X509_PUBKEY_set:= LoadFunctionCLib('X509_PUBKEY_set');
    @X509_PUBKEY_get:= LoadFunctionCLib('X509_PUBKEY_get');
    @X509_get_pubkey_parameters:= LoadFunctionCLib('X509_get_pubkey_parameters');
    @i2d_PUBKEY:= LoadFunctionCLib('i2d_PUBKEY');
    @d2i_PUBKEY:= LoadFunctionCLib('d2i_PUBKEY');
    @i2d_RSA_PUBKEY:= LoadFunctionCLib('i2d_RSA_PUBKEY');
    @d2i_RSA_PUBKEY:= LoadFunctionCLib('d2i_RSA_PUBKEY');
    @i2d_DSA_PUBKEY:= LoadFunctionCLib('i2d_DSA_PUBKEY');
    @d2i_DSA_PUBKEY:= LoadFunctionCLib('d2i_DSA_PUBKEY');
    @i2d_EC_PUBKEY:= LoadFunctionCLib('i2d_EC_PUBKEY');
    @d2i_EC_PUBKEY:= LoadFunctionCLib('d2i_EC_PUBKEY');
    @X509_NAME_set:= LoadFunctionCLib('X509_NAME_set');
    @X509_get_ex_new_index:= LoadFunctionCLib('X509_get_ex_new_index');
    @X509_set_ex_data:= LoadFunctionCLib('X509_set_ex_data');
    @X509_get_ex_data:= LoadFunctionCLib('X509_get_ex_data');
    @i2d_X509_AUX:= LoadFunctionCLib('i2d_X509_AUX');
    @d2i_X509_AUX:= LoadFunctionCLib('d2i_X509_AUX');
    @X509_alias_set1:= LoadFunctionCLib('X509_alias_set1');
    @X509_keyid_set1:= LoadFunctionCLib('X509_keyid_set1');
    @X509_alias_get0:= LoadFunctionCLib('X509_alias_get0');
    @X509_keyid_get0:= LoadFunctionCLib('X509_keyid_get0');
    @X509_TRUST_set:= LoadFunctionCLib('X509_TRUST_set');
    @X509_add1_trust_object:= LoadFunctionCLib('X509_add1_trust_object');
    @X509_add1_reject_object:= LoadFunctionCLib('X509_add1_reject_object');
    @X509_trust_clear:= LoadFunctionCLib('X509_trust_clear');
    @X509_reject_clear:= LoadFunctionCLib('X509_reject_clear');
    @X509_CRL_add0_revoked:= LoadFunctionCLib('X509_CRL_add0_revoked');
    @X509_CRL_get0_by_serial:= LoadFunctionCLib('X509_CRL_get0_by_serial');
    @X509_CRL_get0_by_cert:= LoadFunctionCLib('X509_CRL_get0_by_cert');
    @X509_PKEY_new:= LoadFunctionCLib('X509_PKEY_new');
    @X509_PKEY_free:= LoadFunctionCLib('X509_PKEY_free');
    @i2d_X509_PKEY:= LoadFunctionCLib('i2d_X509_PKEY');
    @d2i_X509_PKEY:= LoadFunctionCLib('d2i_X509_PKEY');
    @X509_INFO_new:= LoadFunctionCLib('X509_INFO_new');
    @X509_INFO_free:= LoadFunctionCLib('X509_INFO_free');
    @X509_NAME_oneline:= LoadFunctionCLib('X509_NAME_oneline');
    @ASN1_verify:= LoadFunctionCLib('ASN1_verify');
    @ASN1_digest:= LoadFunctionCLib('ASN1_digest');
    @ASN1_sign:= LoadFunctionCLib('ASN1_sign');
    @ASN1_item_digest:= LoadFunctionCLib('ASN1_item_digest');
    @ASN1_item_verify:= LoadFunctionCLib('ASN1_item_verify');
    @ASN1_item_sign:= LoadFunctionCLib('ASN1_item_sign');
    @ASN1_item_sign_ctx:= LoadFunctionCLib('ASN1_item_sign_ctx');
    @X509_set_version:= LoadFunctionCLib('X509_set_version');
    @X509_set_serialNumber:= LoadFunctionCLib('X509_set_serialNumber');
    @X509_get_serialNumber:= LoadFunctionCLib('X509_get_serialNumber');
    @X509_set_issuer_name:= LoadFunctionCLib('X509_set_issuer_name');
    @X509_get_issuer_name:= LoadFunctionCLib('X509_get_issuer_name');
    @X509_set_subject_name:= LoadFunctionCLib('X509_set_subject_name');
    @X509_get_subject_name:= LoadFunctionCLib('X509_get_subject_name');
    @X509_set_notBefore:= LoadFunctionCLib('X509_set_notBefore');
    @X509_set_notAfter:= LoadFunctionCLib('X509_set_notAfter');
    @X509_set_pubkey:= LoadFunctionCLib('X509_set_pubkey');
    @X509_get_pubkey:= LoadFunctionCLib('X509_get_pubkey');
    @X509_get0_pubkey_bitstr:= LoadFunctionCLib('X509_get0_pubkey_bitstr');
    @X509_certificate_type:= LoadFunctionCLib('X509_certificate_type');
    @X509_REQ_set_version:= LoadFunctionCLib('X509_REQ_set_version');
    @X509_REQ_set_subject_name:= LoadFunctionCLib('X509_REQ_set_subject_name');
    @X509_REQ_set_pubkey:= LoadFunctionCLib('X509_REQ_set_pubkey');
    @X509_REQ_get_pubkey:= LoadFunctionCLib('X509_REQ_get_pubkey');
    @X509_REQ_extension_nid:= LoadFunctionCLib('X509_REQ_extension_nid');
    @X509_REQ_get_extension_nids:= LoadFunctionCLib('X509_REQ_get_extension_nids');
    @X509_REQ_set_extension_nids:= LoadFunctionCLib('X509_REQ_set_extension_nids');
    @X509_REQ_get_extensions:= LoadFunctionCLib('X509_REQ_get_extensions');
    @X509_REQ_add_extensions_nid:= LoadFunctionCLib('X509_REQ_add_extensions_nid');
    @X509_REQ_add_extensions:= LoadFunctionCLib('X509_REQ_add_extensions');
    @X509_REQ_get_attr_count:= LoadFunctionCLib('X509_REQ_get_attr_count');
    @X509_REQ_get_attr_by_NID:= LoadFunctionCLib('X509_REQ_get_attr_by_NID');
    @X509_REQ_get_attr_by_OBJ:= LoadFunctionCLib('X509_REQ_get_attr_by_OBJ');
    @X509_REQ_get_attr:= LoadFunctionCLib('X509_REQ_get_attr');
    @X509_REQ_delete_attr:= LoadFunctionCLib('X509_REQ_delete_attr');
    @X509_REQ_add1_attr:= LoadFunctionCLib('X509_REQ_add1_attr');
    @X509_REQ_add1_attr_by_OBJ:= LoadFunctionCLib('X509_REQ_add1_attr_by_OBJ');
    @X509_REQ_add1_attr_by_NID:= LoadFunctionCLib('X509_REQ_add1_attr_by_NID');
    @X509_REQ_add1_attr_by_txt:= LoadFunctionCLib('X509_REQ_add1_attr_by_txt');
    @X509_CRL_set_version:= LoadFunctionCLib('X509_CRL_set_version');
    @X509_CRL_set_issuer_name:= LoadFunctionCLib('X509_CRL_set_issuer_name');
    @X509_CRL_set_lastUpdate:= LoadFunctionCLib('X509_CRL_set_lastUpdate');
    @X509_CRL_set_nextUpdate:= LoadFunctionCLib('X509_CRL_set_nextUpdate');
    @X509_CRL_sort:= LoadFunctionCLib('X509_CRL_sort');
    @X509_REVOKED_set_serialNumber:= LoadFunctionCLib('X509_REVOKED_set_serialNumber');
    @X509_REVOKED_set_revocationDate:= LoadFunctionCLib('X509_REVOKED_set_revocationDate');
    @X509_REQ_check_private_key:= LoadFunctionCLib('X509_REQ_check_private_key');
    @X509_check_private_key:= LoadFunctionCLib('X509_check_private_key');
    @X509_issuer_and_serial_cmp:= LoadFunctionCLib('X509_issuer_and_serial_cmp');
    @X509_issuer_and_serial_hash:= LoadFunctionCLib('X509_issuer_and_serial_hash');
    @X509_issuer_name_cmp:= LoadFunctionCLib('X509_issuer_name_cmp');
    @X509_issuer_name_hash:= LoadFunctionCLib('X509_issuer_name_hash');
    @X509_subject_name_cmp:= LoadFunctionCLib('X509_subject_name_cmp');
    @X509_subject_name_hash:= LoadFunctionCLib('X509_subject_name_hash');
    @X509_issuer_name_hash_old:= LoadFunctionCLib('X509_issuer_name_hash_old');
    @X509_subject_name_hash_old:= LoadFunctionCLib('X509_subject_name_hash_old');
    @X509_cmp:= LoadFunctionCLib('X509_cmp');
    @X509_NAME_cmp:= LoadFunctionCLib('X509_NAME_cmp');
    @X509_NAME_hash:= LoadFunctionCLib('X509_NAME_hash');
    @X509_NAME_hash_old:= LoadFunctionCLib('X509_NAME_hash_old');
    @X509_CRL_cmp:= LoadFunctionCLib('X509_CRL_cmp');
    @X509_CRL_match:= LoadFunctionCLib('X509_CRL_match');
    @X509_NAME_print:= LoadFunctionCLib('X509_NAME_print');
    @X509_NAME_print_ex:= LoadFunctionCLib('X509_NAME_print_ex');
    @X509_print_ex:= LoadFunctionCLib('X509_print_ex');
    @X509_print:= LoadFunctionCLib('X509_print');
    @X509_ocspid_print:= LoadFunctionCLib('X509_ocspid_print');
    @X509_CERT_AUX_print:= LoadFunctionCLib('X509_CERT_AUX_print');
    @X509_CRL_print:= LoadFunctionCLib('X509_CRL_print');
    @X509_REQ_print_ex:= LoadFunctionCLib('X509_REQ_print_ex');
    @X509_REQ_print:= LoadFunctionCLib('X509_REQ_print');
    @X509_NAME_entry_count:= LoadFunctionCLib('X509_NAME_entry_count');
    @X509_NAME_get_text_by_NID:= LoadFunctionCLib('X509_NAME_get_text_by_NID');
    @X509_NAME_get_text_by_OBJ:= LoadFunctionCLib('X509_NAME_get_text_by_OBJ');
    @X509_NAME_get_index_by_NID:= LoadFunctionCLib('X509_NAME_get_index_by_NID');
    @X509_NAME_get_index_by_OBJ:= LoadFunctionCLib('X509_NAME_get_index_by_OBJ');
    @X509_NAME_get_entry:= LoadFunctionCLib('X509_NAME_get_entry');
    @X509_NAME_delete_entry:= LoadFunctionCLib('X509_NAME_delete_entry');
    @X509_NAME_add_entry:= LoadFunctionCLib('X509_NAME_add_entry');
    @X509_NAME_add_entry_by_OBJ:= LoadFunctionCLib('X509_NAME_add_entry_by_OBJ');
    @X509_NAME_add_entry_by_NID:= LoadFunctionCLib('X509_NAME_add_entry_by_NID');
    @X509_NAME_ENTRY_create_by_txt:= LoadFunctionCLib('X509_NAME_ENTRY_create_by_txt');
    @X509_NAME_ENTRY_create_by_NID:= LoadFunctionCLib('X509_NAME_ENTRY_create_by_NID');
    @X509_NAME_add_entry_by_txt:= LoadFunctionCLib('X509_NAME_add_entry_by_txt');
    @X509_NAME_ENTRY_create_by_OBJ:= LoadFunctionCLib('X509_NAME_ENTRY_create_by_OBJ');
    @X509_NAME_ENTRY_set_object:= LoadFunctionCLib('X509_NAME_ENTRY_set_object');
    @X509_NAME_ENTRY_set_data:= LoadFunctionCLib('X509_NAME_ENTRY_set_data');
    @X509_NAME_ENTRY_get_object:= LoadFunctionCLib('X509_NAME_ENTRY_get_object');
    @X509_NAME_ENTRY_get_data:= LoadFunctionCLib('X509_NAME_ENTRY_get_data');
    @X509v3_get_ext_count:= LoadFunctionCLib('X509v3_get_ext_count');
    @X509v3_get_ext_by_NID:= LoadFunctionCLib('X509v3_get_ext_by_NID');
    @X509v3_get_ext_by_OBJ:= LoadFunctionCLib('X509v3_get_ext_by_OBJ');
    @X509v3_get_ext_by_critical:= LoadFunctionCLib('X509v3_get_ext_by_critical');
    @X509v3_get_ext:= LoadFunctionCLib('X509v3_get_ext');
    @X509v3_delete_ext:= LoadFunctionCLib('X509v3_delete_ext');
    @X509v3_add_ext:= LoadFunctionCLib('X509v3_add_ext');
    @X509_get_ext_count:= LoadFunctionCLib('X509_get_ext_count');
    @X509_get_ext_by_NID:= LoadFunctionCLib('X509_get_ext_by_NID');
    @X509_get_ext_by_OBJ:= LoadFunctionCLib('X509_get_ext_by_OBJ');
    @X509_get_ext_by_critical:= LoadFunctionCLib('X509_get_ext_by_critical');
    @X509_get_ext:= LoadFunctionCLib('X509_get_ext');
    @X509_delete_ext:= LoadFunctionCLib('X509_delete_ext');
    @X509_add_ext:= LoadFunctionCLib('X509_add_ext');
    @X509_get_ext_d2i:= LoadFunctionCLib('X509_get_ext_d2i');
    @X509_add1_ext_i2d:= LoadFunctionCLib('X509_add1_ext_i2d');
    @X509_CRL_get_ext_count:= LoadFunctionCLib('X509_CRL_get_ext_count');
    @X509_CRL_get_ext_by_NID:= LoadFunctionCLib('X509_CRL_get_ext_by_NID');
    @X509_CRL_get_ext_by_OBJ:= LoadFunctionCLib('X509_CRL_get_ext_by_OBJ');
    @X509_CRL_get_ext_by_critical:= LoadFunctionCLib('X509_CRL_get_ext_by_critical');
    @X509_CRL_get_ext:= LoadFunctionCLib('X509_CRL_get_ext');
    @X509_CRL_delete_ext:= LoadFunctionCLib('X509_CRL_delete_ext');
    @X509_CRL_add_ext:= LoadFunctionCLib('X509_CRL_add_ext');
    @X509_CRL_get_ext_d2i:= LoadFunctionCLib('X509_CRL_get_ext_d2i');
    @X509_CRL_add1_ext_i2d:= LoadFunctionCLib('X509_CRL_add1_ext_i2d');
    @X509_REVOKED_get_ext_count:= LoadFunctionCLib('X509_REVOKED_get_ext_count');
    @X509_REVOKED_get_ext_by_NID:= LoadFunctionCLib('X509_REVOKED_get_ext_by_NID');
    @X509_REVOKED_get_ext_by_OBJ:= LoadFunctionCLib('X509_REVOKED_get_ext_by_OBJ');
    @X509_REVOKED_get_ext_by_critical:= LoadFunctionCLib('X509_REVOKED_get_ext_by_critical');
    @X509_REVOKED_get_ext:= LoadFunctionCLib('X509_REVOKED_get_ext');
    @X509_REVOKED_delete_ext:= LoadFunctionCLib('X509_REVOKED_delete_ext');
    @X509_REVOKED_add_ext:= LoadFunctionCLib('X509_REVOKED_add_ext');
    @X509_REVOKED_get_ext_d2i:= LoadFunctionCLib('X509_REVOKED_get_ext_d2i');
    @X509_REVOKED_add1_ext_i2d:= LoadFunctionCLib('X509_REVOKED_add1_ext_i2d');
    @X509_EXTENSION_create_by_NID:= LoadFunctionCLib('X509_EXTENSION_create_by_NID');
    @X509_EXTENSION_create_by_OBJ:= LoadFunctionCLib('X509_EXTENSION_create_by_OBJ');
    @X509_EXTENSION_set_object:= LoadFunctionCLib('X509_EXTENSION_set_object');
    @X509_EXTENSION_set_critical:= LoadFunctionCLib('X509_EXTENSION_set_critical');
    @X509_EXTENSION_set_data:= LoadFunctionCLib('X509_EXTENSION_set_data');
    @X509_EXTENSION_get_object:= LoadFunctionCLib('X509_EXTENSION_get_object');
    @X509_EXTENSION_get_data:= LoadFunctionCLib('X509_EXTENSION_get_data');
    @X509_EXTENSION_get_critical:= LoadFunctionCLib('X509_EXTENSION_get_critical');
    @X509at_get_attr_count:= LoadFunctionCLib('X509at_get_attr_count');
    @X509at_get_attr_by_NID:= LoadFunctionCLib('X509at_get_attr_by_NID');
    @X509at_get_attr_by_OBJ:= LoadFunctionCLib('X509at_get_attr_by_OBJ');
    @X509at_get_attr:= LoadFunctionCLib('X509at_get_attr');
    @X509at_delete_attr:= LoadFunctionCLib('X509at_delete_attr');
    @X509at_add1_attr:= LoadFunctionCLib('X509at_add1_attr');
    @X509at_add1_attr_by_OBJ:= LoadFunctionCLib('X509at_add1_attr_by_OBJ');
    @X509at_add1_attr_by_NID:= LoadFunctionCLib('X509at_add1_attr_by_NID');
    @X509at_add1_attr_by_txt:= LoadFunctionCLib('X509at_add1_attr_by_txt');
    @X509at_get0_data_by_OBJ:= LoadFunctionCLib('X509at_get0_data_by_OBJ');
    @X509_ATTRIBUTE_create_by_NID:= LoadFunctionCLib('X509_ATTRIBUTE_create_by_NID');
    @X509_ATTRIBUTE_create_by_OBJ:= LoadFunctionCLib('X509_ATTRIBUTE_create_by_OBJ');
    @X509_ATTRIBUTE_create_by_txt:= LoadFunctionCLib('X509_ATTRIBUTE_create_by_txt');
    @X509_ATTRIBUTE_set1_object:= LoadFunctionCLib('X509_ATTRIBUTE_set1_object');
    @X509_ATTRIBUTE_set1_data:= LoadFunctionCLib('X509_ATTRIBUTE_set1_data');
    @X509_ATTRIBUTE_get0_data:= LoadFunctionCLib('X509_ATTRIBUTE_get0_data');
    @X509_ATTRIBUTE_count:= LoadFunctionCLib('X509_ATTRIBUTE_count');
    @X509_ATTRIBUTE_get0_object:= LoadFunctionCLib('X509_ATTRIBUTE_get0_object');
    @X509_ATTRIBUTE_get0_type:= LoadFunctionCLib('X509_ATTRIBUTE_get0_type');
    @EVP_PKEY_get_attr_count:= LoadFunctionCLib('EVP_PKEY_get_attr_count');
    @EVP_PKEY_get_attr_by_NID:= LoadFunctionCLib('EVP_PKEY_get_attr_by_NID');
    @EVP_PKEY_get_attr_by_OBJ:= LoadFunctionCLib('EVP_PKEY_get_attr_by_OBJ');
    @EVP_PKEY_get_attr:= LoadFunctionCLib('EVP_PKEY_get_attr');
    @EVP_PKEY_delete_attr:= LoadFunctionCLib('EVP_PKEY_delete_attr');
    @EVP_PKEY_add1_attr:= LoadFunctionCLib('EVP_PKEY_add1_attr');
    @EVP_PKEY_add1_attr_by_OBJ:= LoadFunctionCLib('EVP_PKEY_add1_attr_by_OBJ');
    @EVP_PKEY_add1_attr_by_NID:= LoadFunctionCLib('EVP_PKEY_add1_attr_by_NID');
    @EVP_PKEY_add1_attr_by_txt:= LoadFunctionCLib('EVP_PKEY_add1_attr_by_txt');
    @X509_verify_cert:= LoadFunctionCLib('X509_verify_cert');
    @X509_find_by_issuer_and_serial:= LoadFunctionCLib('X509_find_by_issuer_and_serial');
    @X509_find_by_subject:= LoadFunctionCLib('X509_find_by_subject');
    @PKCS5_pbe_set0_algor:= LoadFunctionCLib('PKCS5_pbe_set0_algor');
    @PKCS5_pbe_set:= LoadFunctionCLib('PKCS5_pbe_set');
    @PKCS5_pbe2_set:= LoadFunctionCLib('PKCS5_pbe2_set');
    @PKCS5_pbe2_set_iv:= LoadFunctionCLib('PKCS5_pbe2_set_iv');
    @PKCS5_pbkdf2_set:= LoadFunctionCLib('PKCS5_pbkdf2_set');
    @EVP_PKCS82PKEY:= LoadFunctionCLib('EVP_PKCS82PKEY');
    @EVP_PKEY2PKCS8:= LoadFunctionCLib('EVP_PKEY2PKCS8');
    @EVP_PKEY2PKCS8_broken:= LoadFunctionCLib('EVP_PKEY2PKCS8_broken');
    @PKCS8_set_broken:= LoadFunctionCLib('PKCS8_set_broken');
    @PKCS8_pkey_set0:= LoadFunctionCLib('PKCS8_pkey_set0');
    @PKCS8_pkey_get0:= LoadFunctionCLib('PKCS8_pkey_get0');
    @X509_PUBKEY_set0_param:= LoadFunctionCLib('X509_PUBKEY_set0_param');
    @X509_PUBKEY_get0_param:= LoadFunctionCLib('X509_PUBKEY_get0_param');
    @X509_check_trust:= LoadFunctionCLib('X509_check_trust');
    @X509_TRUST_get_count:= LoadFunctionCLib('X509_TRUST_get_count');
    @X509_TRUST_get0:= LoadFunctionCLib('X509_TRUST_get0');
    @X509_TRUST_get_by_id:= LoadFunctionCLib('X509_TRUST_get_by_id');
    @X509_TRUST_cleanup:= LoadFunctionCLib('X509_TRUST_cleanup');
    @X509_TRUST_get_flags:= LoadFunctionCLib('X509_TRUST_get_flags');
    @X509_TRUST_get0_name:= LoadFunctionCLib('X509_TRUST_get0_name');
    @X509_TRUST_get_trust:= LoadFunctionCLib('X509_TRUST_get_trust');

    @X509_EXTENSION_new:= LoadFunctionCLib('X509_EXTENSION_new');
    @d2i_X509_EXTENSION:= LoadFunctionCLib('d2i_X509_EXTENSION');
    @i2d_X509_EXTENSION:= LoadFunctionCLib('i2d_X509_EXTENSION');
    @X509_EXTENSION_it:= LoadFunctionCLib('X509_EXTENSION_it');
    @X509_ATTRIBUTE_new:= LoadFunctionCLib('X509_ATTRIBUTE_new');
    @X509_ATTRIBUTE_free:= LoadFunctionCLib('X509_ATTRIBUTE_free');
    @d2i_X509_ATTRIBUTE:= LoadFunctionCLib('d2i_X509_ATTRIBUTE');
    @i2d_X509_ATTRIBUTE:= LoadFunctionCLib('i2d_X509_ATTRIBUTE');
    @X509_ATTRIBUTE_it:= LoadFunctionCLib('X509_ATTRIBUTE_it');
    @d2i_X509_REQ:= LoadFunctionCLib('d2i_X509_REQ');
    @i2d_X509_REQ:= LoadFunctionCLib('i2d_X509_REQ');
    @X509_REQ_it:= LoadFunctionCLib('X509_REQ_it');
    @X509_REQ_INFO_new:= LoadFunctionCLib('X509_REQ_INFO_new');
    @X509_REQ_INFO_free:= LoadFunctionCLib('X509_REQ_INFO_free');
    @d2i_X509_REQ_INFO:= LoadFunctionCLib('d2i_X509_REQ_INFO');
    @i2d_X509_REQ_INFO:= LoadFunctionCLib('i2d_X509_REQ_INFO');
    @X509_REQ_INFO_it:= LoadFunctionCLib('X509_REQ_INFO_it');
    @X509_SIG_new:= LoadFunctionCLib('X509_SIG_new');
    @X509_SIG_free:= LoadFunctionCLib('X509_SIG_free');
    @d2i_X509_SIG:= LoadFunctionCLib('d2i_X509_SIG');
    @i2d_X509_SIG:= LoadFunctionCLib('i2d_X509_SIG');
    @X509_SIG_it:= LoadFunctionCLib('X509_SIG_it');
    @X509_PUBKEY_new:= LoadFunctionCLib('X509_PUBKEY_new');
    @X509_PUBKEY_free:= LoadFunctionCLib('X509_PUBKEY_free');
    @d2i_X509_PUBKEY:= LoadFunctionCLib('d2i_X509_PUBKEY');
    @i2d_X509_PUBKEY:= LoadFunctionCLib('i2d_X509_PUBKEY');
    @X509_PUBKEY_it:= LoadFunctionCLib('X509_PUBKEY_it');
    @X509_VAL_new:= LoadFunctionCLib('X509_VAL_new');
    @X509_VAL_free:= LoadFunctionCLib('X509_VAL_free');
    @d2i_X509_VAL:= LoadFunctionCLib('d2i_X509_VAL');
    @i2d_X509_VAL:= LoadFunctionCLib('i2d_X509_VAL');
    @X509_VAL_it:= LoadFunctionCLib('X509_VAL_it');
    @X509_NAME_ENTRY_new:= LoadFunctionCLib('X509_NAME_ENTRY_new');
    @X509_NAME_ENTRY_free:= LoadFunctionCLib('X509_NAME_ENTRY_free');
    @d2i_X509_NAME_ENTRY:= LoadFunctionCLib('d2i_X509_NAME_ENTRY');
    @i2d_X509_NAME_ENTRY:= LoadFunctionCLib('i2d_X509_NAME_ENTRY');
    @X509_NAME_ENTRY_it:= LoadFunctionCLib('X509_NAME_ENTRY_it');
    @d2i_X509_NAME:= LoadFunctionCLib('d2i_X509_NAME');
    @i2d_X509_NAME:= LoadFunctionCLib('i2d_X509_NAME');
    @X509_NAME_it:= LoadFunctionCLib('X509_NAME_it');
    @X509_CINF_new:= LoadFunctionCLib('X509_CINF_new');
    @X509_CINF_free:= LoadFunctionCLib('X509_CINF_free');
    @d2i_X509_CINF:= LoadFunctionCLib('d2i_X509_CINF');
    @i2d_X509_CINF:= LoadFunctionCLib('i2d_X509_CINF');
    @X509_CINF_it:= LoadFunctionCLib('X509_CINF_it');
    @d2i_X509:= LoadFunctionCLib('d2i_X509');
    @i2d_X509:= LoadFunctionCLib('i2d_X509');
    @X509_it:= LoadFunctionCLib('X509_it');
    @X509_CERT_AUX_new:= LoadFunctionCLib('X509_CERT_AUX_new');
    @X509_CERT_AUX_free:= LoadFunctionCLib('X509_CERT_AUX_free');
    @d2i_X509_CERT_AUX:= LoadFunctionCLib('d2i_X509_CERT_AUX');
    @i2d_X509_CERT_AUX:= LoadFunctionCLib('i2d_X509_CERT_AUX');
    @X509_CERT_AUX_it:= LoadFunctionCLib('X509_CERT_AUX_it');
    @X509_CERT_PAIR_new:= LoadFunctionCLib('X509_CERT_PAIR_new');
    @X509_CERT_PAIR_free:= LoadFunctionCLib('X509_CERT_PAIR_free');
    @d2i_X509_CERT_PAIR:= LoadFunctionCLib('d2i_X509_CERT_PAIR');
    @i2d_X509_CERT_PAIR:= LoadFunctionCLib('i2d_X509_CERT_PAIR');
    @X509_CERT_PAIR_it:= LoadFunctionCLib('X509_CERT_PAIR_it');
    @X509_REVOKED_new:= LoadFunctionCLib('X509_REVOKED_new');
    @X509_REVOKED_free:= LoadFunctionCLib('X509_REVOKED_free');
    @d2i_X509_REVOKED:= LoadFunctionCLib('d2i_X509_REVOKED');
    @i2d_X509_REVOKED:= LoadFunctionCLib('i2d_X509_REVOKED');
    @X509_REVOKED_it:= LoadFunctionCLib('X509_REVOKED_it');
    @X509_CRL_INFO_new:= LoadFunctionCLib('X509_CRL_INFO_new');
    @X509_CRL_INFO_free:= LoadFunctionCLib('X509_CRL_INFO_free');
    @d2i_X509_CRL_INFO:= LoadFunctionCLib('d2i_X509_CRL_INFO');
    @i2d_X509_CRL_INFO:= LoadFunctionCLib('i2d_X509_CRL_INFO');
    @X509_CRL_INFO_it:= LoadFunctionCLib('X509_CRL_INFO_it');
    @X509_CRL_new:= LoadFunctionCLib('X509_CRL_new');
    @X509_CRL_free:= LoadFunctionCLib('X509_CRL_free');
    @d2i_X509_CRL:= LoadFunctionCLib('d2i_X509_CRL');
    @i2d_X509_CRL:= LoadFunctionCLib('i2d_X509_CRL');
    @X509_CRL_it:= LoadFunctionCLib('X509_CRL_it');
    @NETSCAPE_SPKI_new:= LoadFunctionCLib('NETSCAPE_SPKI_new');
    @NETSCAPE_SPKI_free:= LoadFunctionCLib('NETSCAPE_SPKI_free');
    @d2i_NETSCAPE_SPKI:= LoadFunctionCLib('d2i_NETSCAPE_SPKI');
    @i2d_NETSCAPE_SPKI:= LoadFunctionCLib('i2d_NETSCAPE_SPKI');
    @NETSCAPE_SPKI_it:= LoadFunctionCLib('NETSCAPE_SPKI_it');
    @NETSCAPE_SPKAC_new:= LoadFunctionCLib('NETSCAPE_SPKAC_new');
    @NETSCAPE_SPKAC_free:= LoadFunctionCLib('NETSCAPE_SPKAC_free');
    @d2i_NETSCAPE_SPKAC:= LoadFunctionCLib('d2i_NETSCAPE_SPKAC');
    @i2d_NETSCAPE_SPKAC:= LoadFunctionCLib('i2d_NETSCAPE_SPKAC');
    @NETSCAPE_SPKAC_it:= LoadFunctionCLib('NETSCAPE_SPKAC_it');
    @NETSCAPE_CERT_SEQUENCE_new:= LoadFunctionCLib('NETSCAPE_CERT_SEQUENCE_new');
    @NETSCAPE_CERT_SEQUENCE_free:= LoadFunctionCLib('NETSCAPE_CERT_SEQUENCE_free');
    @d2i_NETSCAPE_CERT_SEQUENCE:= LoadFunctionCLib('d2i_NETSCAPE_CERT_SEQUENCE');
    @i2d_NETSCAPE_CERT_SEQUENCE:= LoadFunctionCLib('i2d_NETSCAPE_CERT_SEQUENCE');
    @NETSCAPE_CERT_SEQUENCE_it:= LoadFunctionCLib('NETSCAPE_CERT_SEQUENCE_it');

    @PROXY_POLICY_new:= LoadFunctionCLib('PROXY_POLICY_new');
    @PROXY_POLICY_free:= LoadFunctionCLib('PROXY_POLICY_free');
    @d2i_PROXY_POLICY:= LoadFunctionCLib('d2i_PROXY_POLICY');
    @i2d_PROXY_POLICY:= LoadFunctionCLib('i2d_PROXY_POLICY');
    @PROXY_POLICY_it:= LoadFunctionCLib('PROXY_POLICY_it');
    @PROXY_CERT_INFO_EXTENSION_new:= LoadFunctionCLib('PROXY_CERT_INFO_EXTENSION_new');
    @PROXY_CERT_INFO_EXTENSION_free:= LoadFunctionCLib('PROXY_CERT_INFO_EXTENSION_free');
    @d2i_PROXY_CERT_INFO_EXTENSION:= LoadFunctionCLib('d2i_PROXY_CERT_INFO_EXTENSION');
    @i2d_PROXY_CERT_INFO_EXTENSION:= LoadFunctionCLib('i2d_PROXY_CERT_INFO_EXTENSION');
    @PROXY_CERT_INFO_EXTENSION_it:= LoadFunctionCLib('PROXY_CERT_INFO_EXTENSION_it');
    @BASIC_CONSTRAINTS_new:= LoadFunctionCLib('BASIC_CONSTRAINTS_new');
    @BASIC_CONSTRAINTS_free:= LoadFunctionCLib('BASIC_CONSTRAINTS_free');
    @d2i_BASIC_CONSTRAINTS:= LoadFunctionCLib('d2i_BASIC_CONSTRAINTS');
    @i2d_BASIC_CONSTRAINTS:= LoadFunctionCLib('i2d_BASIC_CONSTRAINTS');
    @BASIC_CONSTRAINTS_it:= LoadFunctionCLib('BASIC_CONSTRAINTS_it');
    @SXNET_new:= LoadFunctionCLib('SXNET_new');
    @SXNET_free:= LoadFunctionCLib('SXNET_free');
    @d2i_SXNET:= LoadFunctionCLib('d2i_SXNET');
    @i2d_SXNET:= LoadFunctionCLib('i2d_SXNET');
    @SXNET_it:= LoadFunctionCLib('SXNET_it');
    @SXNETID_new:= LoadFunctionCLib('SXNETID_new');
    @SXNETID_free:= LoadFunctionCLib('SXNETID_free');
    @d2i_SXNETID:= LoadFunctionCLib('d2i_SXNETID');
    @i2d_SXNETID:= LoadFunctionCLib('i2d_SXNETID');
    @SXNETID_it:= LoadFunctionCLib('SXNETID_it');
    @AUTHORITY_KEYID_new:= LoadFunctionCLib('AUTHORITY_KEYID_new');
    @AUTHORITY_KEYID_free:= LoadFunctionCLib('AUTHORITY_KEYID_free');
    @d2i_AUTHORITY_KEYID:= LoadFunctionCLib('d2i_AUTHORITY_KEYID');
    @i2d_AUTHORITY_KEYID:= LoadFunctionCLib('i2d_AUTHORITY_KEYID');
    @AUTHORITY_KEYID_it:= LoadFunctionCLib('AUTHORITY_KEYID_it');
    @PKEY_USAGE_PERIOD_new:= LoadFunctionCLib('PKEY_USAGE_PERIOD_new');
    @PKEY_USAGE_PERIOD_free:= LoadFunctionCLib('PKEY_USAGE_PERIOD_free');
    @d2i_PKEY_USAGE_PERIOD:= LoadFunctionCLib('d2i_PKEY_USAGE_PERIOD');
    @i2d_PKEY_USAGE_PERIOD:= LoadFunctionCLib('i2d_PKEY_USAGE_PERIOD');
    @PKEY_USAGE_PERIOD_it:= LoadFunctionCLib('PKEY_USAGE_PERIOD_it');
    @GENERAL_NAME_new:= LoadFunctionCLib('GENERAL_NAME_new');
    @GENERAL_NAME_free:= LoadFunctionCLib('GENERAL_NAME_free');
    @d2i_GENERAL_NAME:= LoadFunctionCLib('d2i_GENERAL_NAME');
    @i2d_GENERAL_NAME:= LoadFunctionCLib('i2d_GENERAL_NAME');
    @GENERAL_NAME_it:= LoadFunctionCLib('GENERAL_NAME_it');
    @GENERAL_NAMES_new:= LoadFunctionCLib('GENERAL_NAMES_new');
    @GENERAL_NAMES_free:= LoadFunctionCLib('GENERAL_NAMES_free');
    @d2i_GENERAL_NAMES:= LoadFunctionCLib('d2i_GENERAL_NAMES');
    @i2d_GENERAL_NAMES:= LoadFunctionCLib('i2d_GENERAL_NAMES');
    @GENERAL_NAMES_it:= LoadFunctionCLib('GENERAL_NAMES_it');
    @OTHERNAME_new:= LoadFunctionCLib('OTHERNAME_new');
    @OTHERNAME_free:= LoadFunctionCLib('OTHERNAME_free');
    @d2i_OTHERNAME:= LoadFunctionCLib('d2i_OTHERNAME');
    @i2d_OTHERNAME:= LoadFunctionCLib('i2d_OTHERNAME');
    @OTHERNAME_it:= LoadFunctionCLib('OTHERNAME_it');
    @EDIPARTYNAME_new:= LoadFunctionCLib('EDIPARTYNAME_new');
    @EDIPARTYNAME_free:= LoadFunctionCLib('EDIPARTYNAME_free');
    @d2i_EDIPARTYNAME:= LoadFunctionCLib('d2i_EDIPARTYNAME');
    @i2d_EDIPARTYNAME:= LoadFunctionCLib('i2d_EDIPARTYNAME');
    @EDIPARTYNAME_it:= LoadFunctionCLib('EDIPARTYNAME_it');
    @EXTENDED_KEY_USAGE_new:= LoadFunctionCLib('EXTENDED_KEY_USAGE_new');
    @EXTENDED_KEY_USAGE_free:= LoadFunctionCLib('EXTENDED_KEY_USAGE_free');
    @d2i_EXTENDED_KEY_USAGE:= LoadFunctionCLib('d2i_EXTENDED_KEY_USAGE');
    @i2d_EXTENDED_KEY_USAGE:= LoadFunctionCLib('i2d_EXTENDED_KEY_USAGE');
    @EXTENDED_KEY_USAGE_it:= LoadFunctionCLib('EXTENDED_KEY_USAGE_it');
    @CERTIFICATEPOLICIES_new:= LoadFunctionCLib('CERTIFICATEPOLICIES_new');
    @CERTIFICATEPOLICIES_free:= LoadFunctionCLib('CERTIFICATEPOLICIES_free');
    @d2i_CERTIFICATEPOLICIES:= LoadFunctionCLib('d2i_CERTIFICATEPOLICIES');
    @i2d_CERTIFICATEPOLICIES:= LoadFunctionCLib('i2d_CERTIFICATEPOLICIES');
    @CERTIFICATEPOLICIES_it:= LoadFunctionCLib('CERTIFICATEPOLICIES_it');
    @POLICYINFO_new:= LoadFunctionCLib('POLICYINFO_new');
    @POLICYINFO_free:= LoadFunctionCLib('POLICYINFO_free');
    @d2i_POLICYINFO:= LoadFunctionCLib('d2i_POLICYINFO');
    @i2d_POLICYINFO:= LoadFunctionCLib('i2d_POLICYINFO');
    @POLICYINFO_it:= LoadFunctionCLib('POLICYINFO_it');
    @POLICYQUALINFO_new:= LoadFunctionCLib('POLICYQUALINFO_new');
    @POLICYQUALINFO_free:= LoadFunctionCLib('POLICYQUALINFO_free');
    @d2i_POLICYQUALINFO:= LoadFunctionCLib('d2i_POLICYQUALINFO');
    @i2d_POLICYQUALINFO:= LoadFunctionCLib('i2d_POLICYQUALINFO');
    @POLICYQUALINFO_it:= LoadFunctionCLib('POLICYQUALINFO_it');
    @USERNOTICE_new:= LoadFunctionCLib('USERNOTICE_new');
    @USERNOTICE_free:= LoadFunctionCLib('USERNOTICE_free');
    @d2i_USERNOTICE:= LoadFunctionCLib('d2i_USERNOTICE');
    @i2d_USERNOTICE:= LoadFunctionCLib('i2d_USERNOTICE');
    @USERNOTICE_it:= LoadFunctionCLib('USERNOTICE_it');
    @NOTICEREF_new:= LoadFunctionCLib('NOTICEREF_new');
    @NOTICEREF_free:= LoadFunctionCLib('NOTICEREF_free');
    @d2i_NOTICEREF:= LoadFunctionCLib('d2i_NOTICEREF');
    @i2d_NOTICEREF:= LoadFunctionCLib('i2d_NOTICEREF');
    @NOTICEREF_it:= LoadFunctionCLib('NOTICEREF_it');
    @CRL_DIST_POINTS_new:= LoadFunctionCLib('CRL_DIST_POINTS_new');
    @CRL_DIST_POINTS_free:= LoadFunctionCLib('CRL_DIST_POINTS_free');
    @d2i_CRL_DIST_POINTS:= LoadFunctionCLib('d2i_CRL_DIST_POINTS');
    @i2d_CRL_DIST_POINTS:= LoadFunctionCLib('i2d_CRL_DIST_POINTS');
    @CRL_DIST_POINTS_it:= LoadFunctionCLib('CRL_DIST_POINTS_it');
    @DIST_POINT_new:= LoadFunctionCLib('DIST_POINT_new');
    @DIST_POINT_free:= LoadFunctionCLib('DIST_POINT_free');
    @d2i_DIST_POINT:= LoadFunctionCLib('d2i_DIST_POINT');
    @i2d_DIST_POINT:= LoadFunctionCLib('i2d_DIST_POINT');
    @DIST_POINT_it:= LoadFunctionCLib('DIST_POINT_it');
    @DIST_POINT_NAME_new:= LoadFunctionCLib('DIST_POINT_NAME_new');
    @DIST_POINT_NAME_free:= LoadFunctionCLib('DIST_POINT_NAME_free');
    @d2i_DIST_POINT_NAME:= LoadFunctionCLib('d2i_DIST_POINT_NAME');
    @i2d_DIST_POINT_NAME:= LoadFunctionCLib('i2d_DIST_POINT_NAME');
    @DIST_POINT_NAME_it:= LoadFunctionCLib('DIST_POINT_NAME_it');
    @ISSUING_DIST_POINT_new:= LoadFunctionCLib('ISSUING_DIST_POINT_new');
    @ISSUING_DIST_POINT_free:= LoadFunctionCLib('ISSUING_DIST_POINT_free');
    @d2i_ISSUING_DIST_POINT:= LoadFunctionCLib('d2i_ISSUING_DIST_POINT');
    @i2d_ISSUING_DIST_POINT:= LoadFunctionCLib('i2d_ISSUING_DIST_POINT');
    @ISSUING_DIST_POINT_it:= LoadFunctionCLib('ISSUING_DIST_POINT_it');
    @ACCESS_DESCRIPTION_new:= LoadFunctionCLib('ACCESS_DESCRIPTION_new');
    @ACCESS_DESCRIPTION_free:= LoadFunctionCLib('ACCESS_DESCRIPTION_free');
    @d2i_ACCESS_DESCRIPTION:= LoadFunctionCLib('d2i_ACCESS_DESCRIPTION');
    @i2d_ACCESS_DESCRIPTION:= LoadFunctionCLib('i2d_ACCESS_DESCRIPTION');
    @ACCESS_DESCRIPTION_it:= LoadFunctionCLib('ACCESS_DESCRIPTION_it');
    @AUTHORITY_INFO_ACCESS_new:= LoadFunctionCLib('AUTHORITY_INFO_ACCESS_new');
    @AUTHORITY_INFO_ACCESS_free:= LoadFunctionCLib('AUTHORITY_INFO_ACCESS_free');
    @d2i_AUTHORITY_INFO_ACCESS:= LoadFunctionCLib('d2i_AUTHORITY_INFO_ACCESS');
    @i2d_AUTHORITY_INFO_ACCESS:= LoadFunctionCLib('i2d_AUTHORITY_INFO_ACCESS');
    @AUTHORITY_INFO_ACCESS_it:= LoadFunctionCLib('AUTHORITY_INFO_ACCESS_it');
    
    @SXNET_add_id_asc:= LoadFunctionCLib('SXNET_add_id_asc');
    @SXNET_add_id_ulong:= LoadFunctionCLib('SXNET_add_id_ulong');
    @SXNET_add_id_INTEGER:= LoadFunctionCLib('SXNET_add_id_INTEGER');
    @SXNET_get_id_asc:= LoadFunctionCLib('SXNET_get_id_asc');
    @SXNET_get_id_ulong:= LoadFunctionCLib('SXNET_get_id_ulong');
    @SXNET_get_id_INTEGER:= LoadFunctionCLib('SXNET_get_id_INTEGER');
    @GENERAL_NAME_cmp:= LoadFunctionCLib('GENERAL_NAME_cmp');
    @v2i_ASN1_BIT_STRING:= LoadFunctionCLib('v2i_ASN1_BIT_STRING');
    @i2v_ASN1_BIT_STRING:= LoadFunctionCLib('i2v_ASN1_BIT_STRING');
    @i2v_GENERAL_NAME:= LoadFunctionCLib('i2v_GENERAL_NAME');
    @GENERAL_NAME_print:= LoadFunctionCLib('GENERAL_NAME_print');
    @i2v_GENERAL_NAMES:= LoadFunctionCLib('i2v_GENERAL_NAMES');
    @v2i_GENERAL_NAMES:= LoadFunctionCLib('v2i_GENERAL_NAMES');
    @OTHERNAME_cmp:= LoadFunctionCLib('OTHERNAME_cmp');
    @GENERAL_NAME_set0_value:= LoadFunctionCLib('GENERAL_NAME_set0_value');
    @GENERAL_NAME_get0_value:= LoadFunctionCLib('GENERAL_NAME_get0_value');
    @GENERAL_NAME_set0_othername:= LoadFunctionCLib('GENERAL_NAME_set0_othername');
    @GENERAL_NAME_get0_otherName:= LoadFunctionCLib('GENERAL_NAME_get0_otherName');
    @i2s_ASN1_OCTET_STRING:= LoadFunctionCLib('i2s_ASN1_OCTET_STRING');
    @s2i_ASN1_OCTET_STRING:= LoadFunctionCLib('s2i_ASN1_OCTET_STRING');
    @i2a_ACCESS_DESCRIPTION:= LoadFunctionCLib('i2a_ACCESS_DESCRIPTION');
    @DIST_POINT_set_dpname:= LoadFunctionCLib('DIST_POINT_set_dpname');
    @NAME_CONSTRAINTS_check:= LoadFunctionCLib('NAME_CONSTRAINTS_check');
    @a2i_GENERAL_NAME:= LoadFunctionCLib('a2i_GENERAL_NAME');
    @v2i_GENERAL_NAME:= LoadFunctionCLib('v2i_GENERAL_NAME');
    @v2i_GENERAL_NAME_ex:= LoadFunctionCLib('v2i_GENERAL_NAME_ex');
    @X509V3_conf_free:= LoadFunctionCLib('X509V3_conf_free');
    @X509V3_EXT_nconf_nid:= LoadFunctionCLib('X509V3_EXT_nconf_nid');
    @X509V3_EXT_nconf:= LoadFunctionCLib('X509V3_EXT_nconf');
    @X509V3_EXT_add_nconf_sk:= LoadFunctionCLib('X509V3_EXT_add_nconf_sk');
    @X509V3_EXT_add_nconf:= LoadFunctionCLib('X509V3_EXT_add_nconf');
    @X509V3_EXT_REQ_add_nconf:= LoadFunctionCLib('X509V3_EXT_REQ_add_nconf');
    @X509V3_EXT_CRL_add_nconf:= LoadFunctionCLib('X509V3_EXT_CRL_add_nconf');
    @X509V3_EXT_conf:= LoadFunctionCLib('X509V3_EXT_conf');
    @X509V3_EXT_add_conf:= LoadFunctionCLib('X509V3_EXT_add_conf');
    @X509V3_EXT_REQ_add_conf:= LoadFunctionCLib('X509V3_EXT_REQ_add_conf');
    @X509V3_EXT_CRL_add_conf:= LoadFunctionCLib('X509V3_EXT_CRL_add_conf');
    @X509V3_add_value_bool_nf:= LoadFunctionCLib('X509V3_add_value_bool_nf');
    @X509V3_get_value_bool:= LoadFunctionCLib('X509V3_get_value_bool');
    @X509V3_get_value_int:= LoadFunctionCLib('X509V3_get_value_int');
    @X509V3_set_nconf:= LoadFunctionCLib('X509V3_set_nconf');
    @X509V3_set_conf_lhash:= LoadFunctionCLib('X509V3_set_conf_lhash');
     
    @X509V3_get_string:= LoadFunctionCLib('X509V3_get_string');
    @X509V3_get_section:= LoadFunctionCLib('X509V3_get_section');
    @X509V3_string_free:= LoadFunctionCLib('X509V3_string_free');
    @X509V3_section_free:= LoadFunctionCLib('X509V3_section_free');
    
    @X509V3_add_value:= LoadFunctionCLib('X509V3_add_value');
    @X509V3_add_value_uchar:= LoadFunctionCLib('X509V3_add_value_uchar');
    @X509V3_add_value_bool:= LoadFunctionCLib('X509V3_add_value_bool');
    @X509V3_add_value_int:= LoadFunctionCLib('X509V3_add_value_int');
    @i2s_ASN1_INTEGER:= LoadFunctionCLib('i2s_ASN1_INTEGER');
    @s2i_ASN1_INTEGER:= LoadFunctionCLib('s2i_ASN1_INTEGER');
    @i2s_ASN1_ENUMERATED:= LoadFunctionCLib('i2s_ASN1_ENUMERATED');
    @i2s_ASN1_ENUMERATED_TABLE:= LoadFunctionCLib('i2s_ASN1_ENUMERATED_TABLE');
    @X509V3_EXT_add:= LoadFunctionCLib('X509V3_EXT_add');
    @X509V3_EXT_add_list:= LoadFunctionCLib('X509V3_EXT_add_list');
    @X509V3_EXT_add_alias:= LoadFunctionCLib('X509V3_EXT_add_alias');
    @X509V3_EXT_cleanup:= LoadFunctionCLib('X509V3_EXT_cleanup');
    
   @X509V3_EXT_get:= LoadFunctionCLib('X509V3_EXT_get');
   @X509V3_EXT_get_nid:= LoadFunctionCLib('X509V3_EXT_get_nid');
   @X509V3_add_standard_extensions:= LoadFunctionCLib('X509V3_add_standard_extensions');
   @X509V3_parse_list:= LoadFunctionCLib('X509V3_parse_list');
   @X509V3_EXT_d2i:= LoadFunctionCLib('X509V3_EXT_d2i');
   @X509V3_get_d2i:= LoadFunctionCLib('X509V3_get_d2i');
     
   @X509V3_EXT_i2d:= LoadFunctionCLib('X509V3_EXT_i2d');
   @X509V3_add1_i2d:= LoadFunctionCLib('X509V3_add1_i2d');
   @hex_to_string:= LoadFunctionCLib('hex_to_string');
   @string_to_hex:= LoadFunctionCLib('string_to_hex');
   @name_cmp:= LoadFunctionCLib('name_cmp');
   @X509V3_EXT_val_prn:= LoadFunctionCLib('X509V3_EXT_val_prn');
   @X509V3_EXT_print:= LoadFunctionCLib('X509V3_EXT_print');

   @X509V3_extensions_print:= LoadFunctionCLib('X509V3_extensions_print');

   @X509_check_ca:= LoadFunctionCLib('X509_check_ca');
   @X509_check_purpose:= LoadFunctionCLib('X509_check_purpose');
   @X509_supported_extension:= LoadFunctionCLib('X509_supported_extension');
   @X509_PURPOSE_set:= LoadFunctionCLib('X509_PURPOSE_set');
   @X509_check_issued:= LoadFunctionCLib('X509_check_issued');
   @X509_check_akid:= LoadFunctionCLib('X509_check_akid');
   @X509_PURPOSE_get_count:= LoadFunctionCLib('X509_PURPOSE_get_count');
   @X509_PURPOSE_get0:= LoadFunctionCLib('X509_PURPOSE_get0');
   @X509_PURPOSE_get_by_sname:= LoadFunctionCLib('X509_PURPOSE_get_by_sname');
   @X509_PURPOSE_get_by_id:= LoadFunctionCLib('X509_PURPOSE_get_by_id');
   @X509_PURPOSE_add:= LoadFunctionCLib('X509_PURPOSE_add');
   @X509_PURPOSE_get0_name:= LoadFunctionCLib('X509_PURPOSE_get0_name');
   @X509_PURPOSE_get0_sname:= LoadFunctionCLib('X509_PURPOSE_get0_sname');
   @X509_PURPOSE_get_trust:= LoadFunctionCLib('X509_PURPOSE_get_trust');
   @X509_PURPOSE_cleanup:= LoadFunctionCLib('X509_PURPOSE_cleanup');
   @X509_PURPOSE_get_id:= LoadFunctionCLib('X509_PURPOSE_get_id');

   @X509_get1_email:= LoadFunctionCLib('X509_get1_email');
   @X509_REQ_get1_email:= LoadFunctionCLib('X509_REQ_get1_email');
   @X509_email_free:= LoadFunctionCLib('X509_email_free');
   @X509_get1_ocsp:= LoadFunctionCLib('X509_get1_ocsp');

   @a2i_IPADDRESS:= LoadFunctionCLib('a2i_IPADDRESS');
   @a2i_IPADDRESS_NC:= LoadFunctionCLib('a2i_IPADDRESS_NC');
   @a2i_ipadd:= LoadFunctionCLib('a2i_ipadd');
   @X509V3_NAME_from_section:= LoadFunctionCLib('X509V3_NAME_from_section');

   @X509_POLICY_NODE_print:= LoadFunctionCLib('X509_POLICY_NODE_print');

   @X509_STORE_new:= LoadFunctionCLib('X509_STORE_new');
   @X509_STORE_free:= LoadFunctionCLib('X509_STORE_free');
   @X509_STORE_add_cert:= LoadFunctionCLib('X509_STORE_add_cert');
   @X509_STORE_add_crl:= LoadFunctionCLib('X509_STORE_add_crl');

  end;
end;
end.
